以下代码可在 2010 年之前的 Excel 中运行:
myRange = Range("A:A")
NumRows = Application.CountA(myRange)
A 列中有 38 个包含文本/值的单元格。在 Excel 2007 中运行代码时,NumRows 正确计算结果为 38,但在 Excel 2010 中(错误)计算结果为 65,536。
进入CountA
函数 in-cell 在两个版本中都可以正常工作。
类似的线程是问题16696891 https://stackoverflow.com/questions/16696891/vba-overflow-error-after-office-2007-to-2010-update,但没有答案,我认为这些建议是转移注意力的……
有任何想法吗?
我不确定你的问题到底是什么,因为我无法让你的代码按编写的方式工作。有两件事似乎很明显:
- 您似乎依赖 VBA 来确定变量类型并进行相应修改。如果您不小心,这可能会造成混乱,因为 VBA 可能会分配您不希望的变量类型。在您的代码中,有一种类型
Range
应分配给myRange
。自从一个Range
type 是 VBA 中的一个对象,它需要是Set
, 像这样:Set myRange = Range("A:A")
- 您对工作表功能的使用
CountA()
应该用.WorksheetFunction
如果您还没有这样做,请考虑使用模块顶部的 Option Explicit 选项,并使用Dim
声明,正如我在下面所做的那样。
下面的代码对 2010 年的我有用。希望它也对你有用:
Dim myRange As Range
Dim NumRows As Integer
Set myRange = Range("A:A")
NumRows = Application.WorksheetFunction.CountA(myRange)
祝你好运。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)