Hi Hans, ich hoffe du kannst was mit den folgenden Ausführungen anfangen…
Wenn nicht, meld dich einfach nochmal… aber das Prinzip sollte jetzt klar sein…
Ach so… zeilen die mit einem Hochkomma ’ anfangen sind Kommentare alle anderen Programmzeilen, die funktionieren sollten.
D.
Sub Makro1()
'Auf das Tabellenblatt mit den Kriterien wechseln…
'hier sollten die Kriterien untereinander in A1 bis An stehen.
'Bei 5 Kriterien eben A1, A2, A3, A4, A5
Sheets(„TabKriterien“).Select
'Definition der Variable in der dann später die Anzahl der Kriterien steht
Dim lastRow As Long
'Nächste Zeile bestimmt die letzte Reihe, in der noch etwas steht.
'(Achtung das Arbeitsblatt muss TabKriterien heissen, wenn du den Code hier benutzt
'wenn das Arbeitsblatt anders heisst, dann muss das natürlich angepast werden)
lastRow = IIf(IsEmpty(Worksheets(„TabKriterien“).Cells(Rows.Count, 1)), Worksheets(„TabKriterien“).Cells(Rows.Count, 1).End(xlUp).Row, Rows.Count)
'jetzt haben wir in lastRow z.B. 5 stehen (bei 5 Kriterien)
'fo-Next durchläuft jetzt die schleife so lange, bis in der Variable i fünf steht. also erst eins,
'dann zwei, dann 3 und dann 4 und 5. danach bricht die schleif ab. Der Code der zwischen FOR und NEXT steht
’ wird also genau so oft ausgeführt, wie viele Kriterien du in TabKriterien stehen hast.
For i = 1 To lastRow
'hier wird jetzt wieder eine Variable für eine Zeichenkette angelegt
Dim copyVariable As String
'Dann das Arbeitsblatt selektiert auf dem deine Kriterien stehen
Sheets(„TabKriterien“).Select
'Hier ist jetzt der Trick beim ersten schleifendurchlauf steht in der Laufvariable i
’ eins (1) d.h. die Variable „copyVariable“ wird jetzt mit dem Wert aus der Zelle A1 belegt.
'beim zweiten durchlauf steht i auf 2, also wird der Inhalt der Zelle A2 ausgelesen.
copyVariable = Range(„A“ & i).Value
'Jetzt selektierst du das Datenblatt auf dem du arbeiten willst (hier z.B. Tabelle 2)
Sheets(„Tabelle2“).Select
'und führst deinen Code aus
Range(„J2“).Select
'und hier kannst du jetzt die Variable copyVariable (oder wie auch immer du sie nennen willst benutzen
Selection.AutoFilter Field:=3, _
Criteria1:=copyVariable & „*“
Range(„A1“).CurrentRegion.Offset(1). _
SpecialCells(xlCellTypeVisible).EntireRow.Delete
Rows(„2:2“).Select
Selection.AutoFilter Field:=3
'Nächste Schleife…
Next i
End Sub
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]