我收到應用程式定義或物件定義的錯誤?

我收到應用程式定義或物件定義的錯誤?

我在 if 語句中不斷收到錯誤,我不太確定我做錯了什麼,對此的任何幫助將不勝感激。

lr = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row

For i = 2 To lr

     DynamicLR = Sheets("RA Inventory").Cells(Rows.Count, 1).End(xlUp).Row


    'If Application.WorksheetFunction.IsNumeric(Application.WorksheetFunction.Match(ActiveSheet.Range("D" & i), Sheets("RA Inventory").Range("D2:D" & DynamicLR), 0)) = False Then
    If Application.WorksheetFunction.IfError(Application.WorksheetFunction.IsNumber(Application.WorksheetFunction.Match(ActiveSheet.Range("D" & i), Sheets("RA Inventory").Range("D:D").Select, 0)), False) = False Then

         ActiveSheet.Range("A" & i).Select
         Selection.Copy
         Worksheets("RA Inventory").Activate
         ActiveSheet.Range("A" & DynamicLR).Select
         ActiveSheet.Paste

謝謝

答案1

如果您正在談論未註釋的內容if- 您不需要選擇並且可以使用語法糖:

If [iferror(isnumber(match(A1,B:B,0)),false)] = True Then
     MsgBox ("True")
     Else: MsgBox ("False")
end if

只需像處理函數一樣對待範圍即可,例如Sheet1!B:B

您也可以省略worksheetfunction允許錯誤的(如果您的公式回傳錯誤)

With Application
   if .iferror(.isnumber(.match( ... 
end with

本質上,您的“匹配”沒有正確引用數據。錯誤 2015 - 請參閱本文檔


更大的問題可能是如何你正在做這件事。您應該使用錯誤處理來處理錯誤。這樣會更好——

Sub test()
lr = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row

For i = 2 To lr

    x = Application.Match(ActiveSheet.Range("B" & i), Sheets("Sheet1").Range("B1:B" & lr), 0)
    If IsNumeric(x) Then
         MsgBox (x)
    End If
Next


End Sub

相關內容