Ich erhalte einen anwendungs- oder objektdefinierten Fehler?

Ich erhalte einen anwendungs- oder objektdefinierten Fehler?

Ich erhalte ständig den Fehler bei meiner if-Anweisung und bin nicht ganz sicher, was ich falsch mache. Für jede Hilfe wäre ich sehr dankbar.

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

Danke

Antwort1

Wenn Sie über das Unkommentierte sprechen if, müssen Sie nichts auswählen und können syntaktischen Zucker verwenden:

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

Behandeln Sie die Bereiche einfach wie bei Funktionen, z. B.Sheet1!B:B

Sie können auch das weglassen, worksheetfunctionwodurch Fehler entstehen (wenn Ihre Formel einen Fehler zurückgibt).

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

Im Wesentlichen verweist Ihr „Match“ nicht korrekt auf die Daten. Fehler 2015 - siehediese Dokumentation


Ein größeres Problem könnte seinWieSie gehen das an. Sie sollten die Fehlerbehandlung verwenden, um den Fehler zu behandeln. Das wäre besser -

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

verwandte Informationen