gpt4 book ai didi

Excel VBA - WorksheetFunction.CountA 错误 - 需要对象

转载 作者:行者123 更新时间:2023-12-04 21:29:06 31 4
gpt4 key购买 nike

伙计们。我是一个编程新手,试图编写一个宏来从多个工作簿中提取一些数据行并将它们编译成一个新的工作簿,然后绘制它们。我已经想出了如何遍历源电子表格和其他一些东西,但现在我被困在几个地方。 (为了清楚起见,我会在不同的线程中问我不同的问题。)

这个问题是关于使用 WorksheetFunction.CountA 获取我正在搜索的项目列表的数量时出现的错误。我想知道这个数字,以便知道何时找到所有搜索字符串。如果我找不到它们,我想通知用户并退出。

遵循 this question 的建议,我写了一个片段来测试 CountA 函数。我收到“需要对象”错误。我已经查看了有关该主题的几个主题,但我仍然没有得到它。这是我的代码片段:

Sub a_test_kpi_count()

Dim kpi_list_count As Integer

Set kpi_list_count = Application.WorksheetFunction.CountA("kpi_list")

MsgBox "There are " & kpi_list_count & "kpis in the list."


End Sub

当我运行代码时,编辑器停止并突出显示“kpi_list_count”或“CountA”。嗯,这很有帮助!

我应该补充一点,“kpi_list”是宏所在的工作表上的一个命名范围。但是,当我以这种方式指定范围时,我得到了同样的错误:
Set kpi_list_count = Application.WorksheetFunction.CountA("K3:K7")

因此,我不认为命名范围是我的问题。

向正确方向轻推将不胜感激!

或者,请随意称我为白痴并指出我明显的错误! ;-)

编辑:

谢谢,本。

此代码有效:
Sub a_test_KPI_count()

Dim KPIListCount As Long

KPIListCount = WorksheetFunction.CountA(Sheet1.Range("KPI_list"))

MsgBox "There are " & KPIListCount & "KPIs in the list."

End Sub

谢谢!奇怪的是,当我使用工作表名称、按钮时它不起作用。工作表名称是否区分大小写?我问是因为编辑坚持使用“按钮”而不是“按钮”。

如果可以的话,还有几个问题供我学习,关于您的一些提示:

3、长与整数。在这种情况下,我计算的是一个短列表(<6)项。整数在这里可以接受吗,还是坚持使用 Long 是最佳做法?
  • Camel 箱VS蛇箱。著名的。这仅仅是更有经验的程序员的偏好吗?还是有功能上的区别?

  • 你的回答都是我希望的那种。钓鱼课,而不是鱼!谢谢!

    最佳答案

  • Set适用于 Object变量 - 删除它。
  • 您需要一个 Range指定命名范围时调用。
    kpi_list_count = Application.WorksheetFunction.CountA(Range("kpi_list"))
  • 99.9999% 的时间你想要一个 Long ,而不是 Integer ;见 this question :
    Dim kpi_list_count as Long
  • 最佳做法是指定 Range 的工作表。开启(根据需要更改):
    kpi_list_count = Application.WorksheetFunction.CountA(Sheet1.Range("kpi_list"))
  • 您可以放弃 Application如果你想。
  • 考虑使用 camelCase而不是 snake_case .
  • 关于Excel VBA - WorksheetFunction.CountA 错误 - 需要对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59735553/

    31 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com