2014-02-20 58 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正確評估它。

相關問題