05.10.2022, 14:50
Hallo,
ich habe eine For-Next-Schleife, welche eine Liste durchsucht und nach den Einträgen "blau" oder "rot" sucht. Wenn es einen Treffer gibt, dann soll sie in der Zelle daneben den Inhalt auslesen, diesen als Grundlage nehmen um über eine Matchsuche einen möglichen Eintrag in einer anderen Spalte zu finden. Wird er gefunden, soll dieser gelöscht werden. So weit so gut. Ist dieser Eintrag aber nicht vorhanden, also ein "Dismatch", dann kommt logischerweise eine Fehlermeldung und das Makro bricht ab. Es ist aber ok kein Match zu haben, denn das kann durchaus vorkommen. In diesem Fall will ich eigentlich nur, dass die Schleife mit der nächsten Überprüfung startet. Also im Prinzip, ignoriere dass du keine Match hast, überspringe alle weiteren Schritte, bis du zu "Next" kommst und geh somit in die nächste Runde der Schleife.
Hab mir verschiedene Ansätze gegoogelt, bekomme sie aber nicht umgesetzt. Ich hänge immer bei einer Fehlermeldung in der Zeile dblmatch = WorksheetFunction.Match(cellname, Range("H1:H43"), 0). Der letzte Versuch war mit "If IsError(dblmatch) Then dblmatch = 2" auf eine leere Zelle zu leiten. Dahin komme ich aber nicht.
Kann mir jemand helfen den Code so zu ändern, dass der Fehler umgangen wird?
Dim Zelle As Range
ActiveSheet.Unprotect
For Each Zelle In Range("C5:C43")
If Zelle.Value = "blau" Or Zelle.Value = "rot" Then
cellname = Zelle.Offset(0, -1).Value
dblmatch = WorksheetFunction.Match(cellname, Range("H1:H43"), 0)
If IsError(dblmatch) Then dblmatch = 2
ActiveSheet.Range("H" & dblmatch).ClearContents
End If
End If
Next Zelle
ActiveSheet.Protect
End Sub
ich habe eine For-Next-Schleife, welche eine Liste durchsucht und nach den Einträgen "blau" oder "rot" sucht. Wenn es einen Treffer gibt, dann soll sie in der Zelle daneben den Inhalt auslesen, diesen als Grundlage nehmen um über eine Matchsuche einen möglichen Eintrag in einer anderen Spalte zu finden. Wird er gefunden, soll dieser gelöscht werden. So weit so gut. Ist dieser Eintrag aber nicht vorhanden, also ein "Dismatch", dann kommt logischerweise eine Fehlermeldung und das Makro bricht ab. Es ist aber ok kein Match zu haben, denn das kann durchaus vorkommen. In diesem Fall will ich eigentlich nur, dass die Schleife mit der nächsten Überprüfung startet. Also im Prinzip, ignoriere dass du keine Match hast, überspringe alle weiteren Schritte, bis du zu "Next" kommst und geh somit in die nächste Runde der Schleife.
Hab mir verschiedene Ansätze gegoogelt, bekomme sie aber nicht umgesetzt. Ich hänge immer bei einer Fehlermeldung in der Zeile dblmatch = WorksheetFunction.Match(cellname, Range("H1:H43"), 0). Der letzte Versuch war mit "If IsError(dblmatch) Then dblmatch = 2" auf eine leere Zelle zu leiten. Dahin komme ich aber nicht.
Kann mir jemand helfen den Code so zu ändern, dass der Fehler umgangen wird?
Dim Zelle As Range
ActiveSheet.Unprotect
For Each Zelle In Range("C5:C43")
If Zelle.Value = "blau" Or Zelle.Value = "rot" Then
cellname = Zelle.Offset(0, -1).Value
dblmatch = WorksheetFunction.Match(cellname, Range("H1:H43"), 0)
If IsError(dblmatch) Then dblmatch = 2
ActiveSheet.Range("H" & dblmatch).ClearContents
End If
End If
Next Zelle
ActiveSheet.Protect
End Sub