错误1004:无法获取CountIf属性

时间:2017-10-17 18:25:06

标签: excel vba excel-vba

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

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的设置中使用它,但是得到了相同的错误。

1 个答案:

答案 0 :(得分: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意味着 S plit R ange Countif
请注意,因为它将值与数字0进行比较,所以Exec会将任何文本都大于0,因此如果您的范围内有任何文本,您可能需要调整测试。