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, worksheetfunction
wodurch 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