Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 将定义的范围应用于工作表函数时类型不匹配_Vba_Function_Excel - Fatal编程技术网

Vba 将定义的范围应用于工作表函数时类型不匹配

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语句来控制我在代码中循环的内容,因此我们从这一行开始:

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
要求两个标准都为真。