Vba 将定义的范围应用于工作表函数时类型不匹配
需要添加一个if语句来控制我在代码中循环的内容,因此我们从这一行开始:Vba 将定义的范围应用于工作表函数时类型不匹配,vba,function,excel,Vba,Function,Excel,需要添加一个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 +
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,类型不匹配。该语句的目的是检查该范围是否仅包含0或空格。公式OR(A1:A5=0,A1:A5=“”)在excel中运行良好,因此我假设它不接受当前形式的范围(注意:我尝试从checkrange.value中删除.value,但这也不起作用)
非常感谢您一如既往的帮助
编辑:我将
Dim checkrange As range
定义为范围无需在If语句中使用工作表功能
If checkrange.value = 0 Or checkrange.value = "" Then
因为您检查的是范围
而不是单元格
,所以必须使用CountA
或CountIf
下面是一个CountA
的示例:
If Application.WorksheetFunction.CountA(checkrange) = 0 Then
无需在If语句中使用工作表函数
If checkrange.value = 0 Or checkrange.value = "" Then
因为您检查的是范围
而不是单元格
,所以必须使用CountA
或CountIf
下面是一个CountA
的示例:
If Application.WorksheetFunction.CountA(checkrange) = 0 Then
我想应该是这样
If Application.WorksheetFunction.Or(checkrange.value = 0, checkrange.value = "") = False Then
虽然这里并没有必要使用工作表函数或。试一试,让我们看看会发生什么。我想应该是这样
If Application.WorksheetFunction.Or(checkrange.value = 0, checkrange.value = "") = False Then
虽然这里并没有必要使用工作表函数或。试一试,让我们看看会发生什么。数组公式或(A1:A5=0,A1:A5=“”)
检查范围内的任何单元格(1个或更多)是否为0或“”。要检查该范围内的任何单元格是否为非0或“”,则可以使用此选项
If WorksheetFunction.CountIfs(checkrange, "<>0", checkrange, "<>") > 0 Then
如果工作表function.CountIfs(checkrange,“0”,checkrange“”)>0,则
数组公式或(A1:A5=0,A1:A5=“”)
检查范围内是否有任何(1个或更多)单元格为0或“”。要检查该范围内的任何单元格是否为非0或“”,则可以使用此选项
If WorksheetFunction.CountIfs(checkrange, "<>0", checkrange, "<>") > 0 Then
如果工作表function.CountIfs(checkrange,“0”,checkrange“”)>0,则
您需要两个独立的COUNTIF语句:
If Application.WorksheetFunction.Countif(checkrange, "0") + Application.WorksheetFunction.Countif(checkrange, "") = 0 Then
您需要两个独立的COUNTIF语句:
If Application.WorksheetFunction.Countif(checkrange, "0") + Application.WorksheetFunction.Countif(checkrange, "") = 0 Then
感谢回复,刚刚尝试但仍然得到类型不匹配:?感谢回复,刚刚尝试但仍然得到类型不匹配:?感谢回复,刚刚尝试但仍然得到类型不匹配:?感谢回复,刚刚尝试但仍然得到类型不匹配:?checkrange定义为/设置为什么?啊,抱歉,忘记包括这一点,我将Dim checkrange设置为range您无法使用=
运算符将多个单元格范围与一个值进行比较,就像您在这里尝试的那样。您应该改用工作表函数.Countif
。此外,您的单元格
引用未通过范围分配中的工作表正确限定。这迟早会给您带来问题。包含多个单元格的范围返回数组。这就是为什么它不能与值进行比较。如果您可以发布答案并接受它,以便其他人知道问题已经解决。不是Countif
,而是Countif
Countifs
要求两个条件都为真。checkrange定义为/设置为什么?啊,对不起,忘了包括这一点,我将Dim checkrange设置为range。您无法使用=
运算符将多个单元格范围与一个值进行比较,就像您在这里尝试的那样。您应该改用工作表函数.Countif
。此外,您的单元格
引用未通过范围分配中的工作表正确限定。这迟早会给您带来问题。包含多个单元格的范围返回数组。这就是为什么它不能与值进行比较。如果您可以发布答案并接受它,以便其他人知道问题已经解决。不是Countif
,而是Countif
Countifs
要求两个标准都为真。