将定义的范围应用于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
你必须使用CountA
或CountIf
这里是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