以下代码可以在2010年前的Excel中使用:
myRange = Range("A:A")
NumRows = Application.CountA(myRange)在A列中有38个包含文本/值的单元格。当代码在Excel2007中运行时,NumRows正确地计算为38,但是在Excel2010中(错误地)计算为65,536。
在单元格中输入CountA函数在两个版本中都可以正常工作。
类似的帖子是question 16696891,但没有答案,我认为建议是转移注意力……
有什么想法吗?
发布于 2014-09-17 20:46:21
我不确定您的问题到底是什么,因为我无法让您的代码按编写的方式工作。有两件事似乎是显而易见的:
myRange分配一种类型的Range。由于工作表类型在VBA中是一个对象,因此它需要为Set,如下所示:应该使用.WorksheetFunction调用Range函数Set的使用
如果您还没有这样做,请考虑使用模块顶部的Option Explicit选项,并使用Dim语句输入变量,就像我在下面做的那样。
以下代码适用于我在2010年的工作。希望它也适用于你:
Dim myRange As Range
Dim NumRows As Integer
Set myRange = Range("A:A")
NumRows = Application.WorksheetFunction.CountA(myRange)祝好运。
发布于 2015-11-28 00:52:27
另一个论坛的答案解决了这个问题。
(将此处显示的"I:I“替换为您自己的范围)
回复: CountA在VBA中不起作用
Should be:
Nonblank = Application.WorksheetFunction.CountA(Range("I:I"))
You have to refer to ranges in the vba format, not the in-excel format.发布于 2014-09-17 20:44:49
下面的代码适用于我:
Sub test()
Dim myRange As Range
Dim NumRows As Integer
Set myRange = Range("A:A")
NumRows = Application.WorksheetFunction.CountA(myRange)
MsgBox NumRows
End Subhttps://stackoverflow.com/questions/25890571
复制相似问题