2014-02-20 60 views
0

这是我在excel中查找值的代码。如果找不到Paint Shop,那么它将得到method range of object _global failed。我是新来的宏,可以任何身体帮助我解决这个问题?对象_global的方法范围在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 
+0

在处理VBA中的'WorksheetFunction'对象时,您应该格外小心。每当你使用这个,并有可能返回一个错误值,总是添加一个错误处理程序。看我的帖子。 – L42

回答

1

试试这个:

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这个工作。

WorksheetFunction.Match Method (Excel)

+0

它返回运行时错误1004“对象_global失败的方法范围” – devuser

+0

修正:见上。 –

+0

非常感谢。我的作品 – devuser

0

处理这种情况,试试这个:

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 

你纳入日常Error HandlingOERN检查工作表函数失败。
如果有,myvalue将不会被初始化,您可以检查它是否为空。
另请注意,我宣称myvalueVariant数据类型。
原因是因为IsEmpty正确评估它。

相关问题