首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WorksheetFunction.CountA -升级到Office2010后无法正常工作

WorksheetFunction.CountA -升级到Office2010后无法正常工作
EN

Stack Overflow用户
提问于 2014-09-17 20:28:29
回答 5查看 137.8K关注 0票数 8

以下代码可以在2010年前的Excel中使用:

代码语言:javascript
复制
myRange = Range("A:A")
NumRows = Application.CountA(myRange)

在A列中有38个包含文本/值的单元格。当代码在Excel2007中运行时,NumRows正确地计算为38,但是在Excel2010中(错误地)计算为65,536。

在单元格中输入CountA函数在两个版本中都可以正常工作。

类似的帖子是question 16696891,但没有答案,我认为建议是转移注意力……

有什么想法吗?

EN

回答 5

Stack Overflow用户

发布于 2014-09-17 20:46:21

我不确定您的问题到底是什么,因为我无法让您的代码按编写的方式工作。有两件事似乎是显而易见的:

  1. 似乎依赖于VBA来确定变量类型并进行相应的修改。如果您不小心,这可能会使您感到困惑,因为VBA可能会分配您不想要的变量类型。在您的代码中,应该为myRange分配一种类型的Range。由于工作表类型在VBA中是一个对象,因此它需要为Set,如下所示:应该使用.WorksheetFunction

调用Range函数Set的使用

如果您还没有这样做,请考虑使用模块顶部的Option Explicit选项,并使用Dim语句输入变量,就像我在下面做的那样。

以下代码适用于我在2010年的工作。希望它也适用于你:

代码语言:javascript
复制
Dim myRange As Range
Dim NumRows As Integer

Set myRange = Range("A:A")
NumRows = Application.WorksheetFunction.CountA(myRange)

祝好运。

票数 8
EN

Stack Overflow用户

发布于 2015-11-28 00:52:27

另一个论坛的答案解决了这个问题。

(将此处显示的"I:I“替换为您自己的范围)

回复: CountA在VBA中不起作用

代码语言:javascript
复制
Should be:

Nonblank = Application.WorksheetFunction.CountA(Range("I:I"))

You have to refer to ranges in the vba format, not the in-excel format.
票数 3
EN

Stack Overflow用户

发布于 2014-09-17 20:44:49

下面的代码适用于我:

代码语言:javascript
复制
Sub test()
    Dim myRange As Range
    Dim NumRows As Integer

    Set myRange = Range("A:A")
    NumRows = Application.WorksheetFunction.CountA(myRange)

    MsgBox NumRows
End Sub
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25890571

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档