Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1852to1856
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

worksheetFunction Match geht nicht

worksheetFunction Match geht nicht
05.11.2021 14:04:38
Basti
Hallo Zusammen,
beim Ausführen erscheint ein Fehler in der match funktion, weiß jemand woran es liegen könnte?:
Die Funktion soll zwei Tabellenblätter anhand einer Matchfunktion durchgehen und falls keine Übereinstimmung vorliegt in Tabelle A die entsprechende Zeile löschen.
'Code
Dim LZ2 As Integer
Dim infotext As String
Dim matchResult As Integer
infotext = " "
For LZ2 = FRow To 2 Step -1
matchResult = WorksheetFunction.IfError(WorksheetFunction.Match(Sheets("TabelleB").Cells(LZ2, 2), TabelleA.Range("B2:B" & FRow), 0), 0)
If matchResult = 0 Then
Worksheets("TabelleA").Rows(LZ2).EntireRow.Delete
End If
Next
Danke Vorab für Hilfestellungen.
Viele Grüße
Basti

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: worksheetFunction Match geht nicht
05.11.2021 14:11:42
Nepumuk
Hallo Basti,
teste mal:

For LZ2 = FRow To 2 Step -1
If IsError(Application.Match(Sheets("TabelleB").Cells(LZ2, 2), TabelleA.Range("B2:B" & FRow), 0)) Then _
Worksheets("TabelleA").Rows(LZ2).EntireRow.Delete
Next
Gruß
Nepumuk
AW: worksheetFunction Match geht nicht
05.11.2021 14:12:57
Daniel
HI
VBA kann nicht alles so ausführen, wie Formeln das können.
Auch wenn man über Worksheetfunction auf Excel-Funktionen zugreifen kann, muss man hier in der Programmierung immer noch die VBA-Regeln beachten und kann Formeln nicht immer 1:1 umsetzen (bspw kann VBA keine Matrixformeln auflösen, da muss man die Schleife selber programmieren).
in diesem Fall ist das einfachste, man verwendet nicht WorksheetFunction.Match, sondern Application.Match.
Das funktioniert genauso, erzeugt aber keinen Fehlerabbruch, wenn der Suchwert nicht gefunden wird, sondern gibt einen Fehler als Ergebnis aus.
Mit diesem Fehlerergebnis muss man natürlich richtig umgehen, sonst kommt dann spätestens hier der Fehler.
in deinem Fall:

Dim MatchResult as Variant
MatchResult = Application.Match(Sheets("TabelleB").Cells(LZ2, 2), TabelleA.Range("B2:B" & FRow), 0)
If VarType(Matchresult) = VbError then Worksheets("TabelleA").Rows(LZ2).EntireRow.Delete
oder verkürzt ohne Variable:

IF IsError(Application.Match(...)) Then ...
Gruß Daniel
Anzeige

41 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige