错误 1004:无法获取 CountIf 属性

问题描述 投票:0回答:2

我正在尝试搜索一系列命名单元格,以查看是否有任何单元格包含大于零的数字。这是我目前拥有的代码:

Dim YTDclauses As Boolean
Dim ytdrng As Range

Set ytdrng = Worksheets("Sheet1").Range("z1AY:z1BB,z1BG:z1BJ")

'Employer 1
If Sheet1.[z1AG] = "No" And WorksheetFunction.CountIf(ytdrng, ">0") = 0 Then
    MsgBox "Works!"
Else
    MsgBox "Does Not Work"
End If

我收到错误“运行时错误‘1004’:无法获取 WorksheetFunction 类的 CountIfs 属性”。通过查看其他问题,我认为这可能是我设置 ytdrng 的方式存在语法错误,但我尝试了多种不同的命名方式但无济于事。感谢任何帮助,谢谢!

注意:Sheet1 被命名为“Main Checklist” - 我也尝试在 ytdrng 的设置中使用它,但得到了相同的错误。

vba excel
2个回答
1
投票

正如 @ScottCraner 所说,您不能在分割范围上执行

countif
。您可以稍微修改例程以通过循环范围内的每个单元格来实现
countif

Dim YTDclauses As Boolean
Dim ytdrng As Range
Dim SRCountif As Long
Dim cel As Object

Set ytdrng = Worksheets("Sheet1").Range("z1AY:z1BB,z1BG:z1BJ")

SRCountif = 0
For Each cel In ytdrng.Cells
    If cel.Value > 0 Then SRCountif = SRCountif + 1
Next

'Employer 1
If Sheet1.[z1AG] = "No" And SRCountif = 0 Then
    MsgBox "Works!"
Else
    MsgBox "Does Not Work"
End If

(变量 SRCountif 的意思是 SplitRangeCountif
请注意,由于它将值与数字 0 进行比较,Exec 会将任何文本视为大于 0,因此如果您的范围内有可能存在任何文本,您可能需要调整测试。


0
投票

可能不直接适用于此,但我在对过滤列的列表对象范围执行 countif 时遇到此错误。我删除了过滤器,错误就消失了。

© www.soinside.com 2019 - 2024. All rights reserved.