我正在尝试搜索一系列命名单元格,以查看是否有任何包含大于零的数字的单元格。这是我目前的代码:
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的设置中使用它,但是得到了相同的错误。
答案 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,因此如果您的范围内有任何文本,您可能需要调整测试。