Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.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 excel宏中对象\u全局的方法范围失败_Vba - Fatal编程技术网

Vba excel宏中对象\u全局的方法范围失败

Vba excel宏中对象\u全局的方法范围失败,vba,Vba,这是我在excel中查找值的代码。如果未找到Paint Shop,则它将获取对象的方法范围\u global failed。我不熟悉excel宏,有谁能帮我解决这个问题吗 If WorksheetFunction.Match("Paint Shop", Range(col & x, col & y), 0) Then paint = WorksheetFunction.Match("Paint Shop", Range(col & x, col & y),

这是我在excel中查找值的代码。如果未找到
Paint Shop
,则它将获取对象的
方法范围\u global failed
。我不熟悉excel宏,有谁能帮我解决这个问题吗

If WorksheetFunction.Match("Paint Shop", Range(col & x, col & y), 0) Then
   paint = WorksheetFunction.Match("Paint Shop", Range(col & x, col & y), 0)
Else
   paint = 2000
End If
试试这个:

Dim Result As Variant
If Not VBA.IsError(Application.Match(...)) Then
    Result = Application.Match(...)
End If
这将尝试匹配,如果函数出现错误,则不会指定结果

或者:

Dim rng As Range: Set rng = Sheet1.Range("A2:A10")
Dim Result As Variant

Result = Application.Match("A", rng, 0)
If Not VBA.IsError(Result) Then
    Debug.Print (Result)
End If
注意:一定要使用
Application.Match
而不是
Application.WorksheetFunction.Match
,才能使其正常工作


要处理此情况,请尝试以下方法:

Dim myvalue

On Error Resume Next
myvalue = WorksheetFunction.Match("Paint Shop", Range(col & x, col & y), 0)
On Error Goto 0

If Not IsEmpty(myvalue) Then
   paint = myvalue
Else
   paint = 2000
End If
您可以合并
错误处理
例程
OERN
,以检查工作表功能是否失败。
如果是,则不会初始化
myvalue
,您可以检查它是否为空。
还要注意,我声明了
myvalue
Variant
数据类型。

原因是
i无法正确计算它。

它返回运行时错误1004“对象的方法范围\u全局失败”。如果这回答了您的问题,请单击答案左侧的复选标记。在VBA中处理
工作表函数
对象时,应格外小心。无论何时使用此选项,并且有可能返回错误值,请始终添加错误处理程序。请看我的帖子。