ich bin auf dem Gebiet der VBA noch ein Neuling und habe folgendes Problem. Ich möchte gerne realisieren, dass die Spalte C in dem Tabellenblatt2 überprüft wird.
Im Tabelleblatt1 werden vier Ziffern eingegeben. Anhand dieses Viererblocks wird die Spalte C im Tabellblatt2 überprüft.
Sollte es nun zur einer Abweichung kommen, wie im Screenshoot ab Zeile 129 (es müsste 2222 drin stehen), so soll die Zeile 128 so lange gelöscht werden, bis der nächste vollständige Viererblock wieder in Zeile 128 steht. (Dieser würde im Screenshoot ab Zeile 131 beginnen)
Ein weiteres Beispiel wäre: in der Zeile 143 müsste 1111 stehen, also müsste wieder die Zeile 143 so lange gelöscht werden, bis der nächste vollständige Viererblock wieder in Zeile 143 steht. (Dieser beginnt in Zeile 146) usw.
Das sollte bis zur letzten beschriebenen Zeile vollzogen werden.
Das "Grundgerüst" des Codes hätte ich so gestaltet.
Sub kontrolle()
Dim i As Long
Dim Zeilemax As Long
Dim ziffera As Long
Dim zifferb As Long
Dim zifferc As Long
Dim ziffere As Long
Dim wksEingabe As Worksheet
Dim wksAusgabe As Worksheet
Set wksEingabe = ActiveWorkbook.Worksheets("Tabelle1")
Set wksAusgabe = ActiveWorkbook.Worksheets("Tabelle2")
ziffera = wksEingabe.Range("B7")
zifferb = wksEingabe.Range("D7")
zifferc = wksEingabe.Range("F7")
zifferd = wksEingabe.Range("H7")
Zeilemax = wksAusgabe.UsedRange.Rows.Count
For i = 1 To Zeilemax Step 4
If wksAusgabe.Cells(i, 3) ziffera And _
wksAusgabe.Cells(i + 1, 3) zifferb And _
wksAusgabe.Cells(i + 2, 3) zifferb And _
wksAusgabe.Cells(i + 3, 3) zifferb Then
wksAusgabe.Rows(i).Delete
wksAusgabe.Rows(i + 1).Delete
wksAusgabe.Rows(i + 2).Delete
wksAusgabe.Rows(i + 3).Delete
End If
Next i
Set wksEingabe = Nothing
Set wksAusgabe = Nothing
End Sub
Der Code funktioniert aber nicht.
Die Datei ist auch zum Download mit bei.
https://www.herber.de/bbs/user/116074.xlsm
Ich hoffe, ich konnte das Problem verständlich erklären und bin auf eure Lösungen gespannt.
Vielen Dank.