Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 错误1004:无法获取CountIf属性_Vba_Excel - Fatal编程技术网

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。谢谢