将定义的范围应用于WorksheetFunction时types不匹配

需要添加一个if语句来控制我在代码中循环的内容,所以已经开始使用这一行:

If Application.WorksheetFunction.Or(checkrange.value = 0, checkrange.value = "") = "False" Then 

我已经定义了checkrange如下

 Set checkrange = finwb.Sheets("Strt_Dash_Final").Range(Cells((cfcll.Row + 1), q), Cells((cfcll.Row + (cfcll.value - 2)), q)) 

我的代码在运行时错误13,types不匹配的工作表函数行上停止。 陈述的目的是检查范围是否只包含0或空格。 公式OR(A1:A5 = 0,A1:A5 =“”)在Excel中工作正常,所以我假设它不接受我的范围在其目前的forms(注意:我试图从checkrange.value删除。值,但这也没有工作)

任何帮助,一如既往,非常感谢!

编辑:我有Dim checkrange As range来定义它作为一个范围

If statement不需要使用WorksheetFunction

 If checkrange.value = 0 Or checkrange.value = "" Then 

因为你检查Range不是一个Cell你必须使用CountACountIf

这里是CountA一个例子:

 If Application.WorksheetFunction.CountA(checkrange) = 0 Then 

您需要两个单独的COUNTIF语句:

 If Application.WorksheetFunction.Countif(checkrange, "0") + Application.WorksheetFunction.Countif(checkrange, "") = 0 Then 

我想应该是

 If Application.WorksheetFunction.Or(checkrange.value = 0, checkrange.value = "") = False Then 

虽然这里没有必要使用工作表函数OR。 尝试一下,看看会发生什么。

数组公式OR(A1:A5 = 0,A1:A5 = "")检查范围内是否有任何 (1个或多个)单元格为0或“”。 要检查范围内的任何单元格是不是 0或“”,那么你可以使用这个

 If WorksheetFunction.CountIfs(checkrange, "<>0", checkrange, "<>") > 0 Then