Vba 错误1004:无法获取CountIf属性
我正在尝试搜索一系列命名的单元格,以查看是否有任何单元格包含大于零的数字。以下是我目前拥有的代码:Vba 错误1004:无法获取CountIf属性,vba,excel,Vba,Excel,我正在尝试搜索一系列命名的单元格,以查看是否有任何单元格包含大于零的数字。以下是我目前拥有的代码: 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 Th
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被命名为“主检查表”-我也尝试在ytdrng设置中使用该检查表,但得到了相同的错误。如前所述,您不能在分割范围内进行计数。通过在以下范围内的每个单元格上循环,可以稍微修改例程以实现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,因此,如果您的范围内有任何文本,您可能需要调整测试。这意味着对象
工作表函数
没有CountIf
方法/属性。。。或者它意味着工作表函数
不是VBA知道的对象。。。。我想您需要application.worksheetfunction.countif
我添加了“application.”,但得到了相同的错误。您不能在断开连接的范围内使用countif。等效的Excel公式有效吗?如果不是的话,为什么你期望等价的VBA代码呢?使用多区域范围,你可以在区域上循环并求和计数…这是一个非常好的主意。最后我把它分为两个不同的范围,分别进行CountIf,但是你的回答帮助了我的概念知识,因为我刚刚开始学习VBA。谢谢