在调试窗口中,以下表达式均返回 1。
Application.WorksheetFunction.CountA(Cells(4 + (i - 1) * rows_per_record, 28) & ":" & Cells(5 + (i - 1) * rows_per_record, 58))
Application.WorksheetFunction.CountA(ThisWorkbook.Sheets(n).Cells(4 + (i - 1) * rows_per_record, 28) & ":" & ThisWorkbook.Sheets(n).Cells(5 + (i - 1) * rows_per_record, 58))
在本例中,范围为 AB60:BF61,这在调试窗口中得到确认。
在工作表中,当脚本暂停时,我在单元格中输入 =CountA(AB60:BF61)
,结果为 0,这就是它应该的结果。
任何解释将不胜感激。
Windows 7、Excel 2010
最佳答案
你的语法错误。
正确语法:
Application.WorksheetFunction.CountA (范围(单元格(4 + (i - 1) * rows_per_record, 28), 单元格(5 + (i - 1) * rows_per_record, 58)))
您的代码正在计算每个非空字符串的参数。唯一的参数是由两个空单元格值包围的冒号。
Application.WorksheetFunction.CountA(ThisWorkbook.Sheets(n).Cells(4 + (i - 1) * rows_per_record, 28) & ":"& ThisWorkbook.Sheets(n).Cells(5 + ( i - 1) * rows_per_record, 58))
关于vba - CountA 返回 0,WorksheetFunction.CountA 返回 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39240958/