Automat. Range-Erweiterung
11.05.2020 14:39:01
Dark
ich habe ein kleines Problem mit meinen Makro und hoffe, Ihr könnt mir da weiterhelfen.
Problembeschreibung: In meiner Arbeitsmappe habe ich diverse Fehlermeldungen integriert, die vor dem Schließen der Arbeitsmappe durchlaufen. Insgesamt habe ich in meiner Tabelle drei unterschiedliche Bereiche (z.B. A1, A2 und A3) in einer Spalte. Diesen Bereichen sind weitere Zeilen untergliedert (z.B. unter A1 sind es noch 5 Zeilen; Die Anzahl der Zeilen unter A2 ist variabel und A3 sind es 10 Zeilen):
Spalte A
Zeile 1: A1-Bereich
Zeile 2: Sachverhalt 1.
Zeile 3: Sachverhalt 2.
.
Zeile 5: Sachverhalt 3.
Zeile 6: A2-Bereich.
Zeile 7: Sachverhalt 1.
usw.
Um zu überprüfen, ob die Bedingungen eingehalten wurden, habe ich den Makro so gebaut, dass er Zeile für Zeile prüft und somit in dem definierten Bereich unterschiedliche Fehlermeldung produziert. Nachdem ich im Bereich A1 ein Grundgerüst zu den unterschiedlichen Fehlermeldungen gebaut habe, habe ich diese für die anderen Bereiche übernommen. Dieses Gerüst habe ich dann in weitere Tabellenblätter (Reiter 1 - 10) übernommen. Die verschiedenen Reiter unterscheiden sich aber in ihrer Zeilenanzahl.
Da die Prüfung der Einhaltung der Bedingungen derzeit Zeile für Zeile erfolgt, kann ich die Range nicht zusammenfassen oder dieser einen Namen geben, da die Anzahl der Zeilen in den Reitern unterschiedlich ist, weil die Zeilen im Bereich A2 immer unterschiedlich sind. Ein weiteres Problem ist, dass ich, wenn ich neue Zeilen einfüge oder lösche, regelmäßig den Makro anpassen muss, da dieser nicht erkennt, ob Zeilen gelöscht oder eingefügt wurden.
Daher wollte ich fragen, ob es eine Möglichkeit gibt, einen Makro zu programmieren, der die Range automatisch um neue Zeilen erweitert oder im Falle der Löschung reduziert und dabei den unterschiedlichen Bereichen zugeordnet werden kann, aber trotzdem Zeile für Zeile prüft?
Beispielmakro. Beispiel für eine Fehlermeldung für den Bereich A1. Jetzt habe ich hier natürlich viele verschiedene Fehlermeldungen, die jeweils an unterschiedliche Kriterien gebunden sind. Den selben Aufbau an Fehlermeldungen habe ich dann für die Bereiche A2 und A3 übernommen, also standardisiert. Diese unterscheiden sich in der Anzahl der Zellen. Füge ich Zeilen hinzu oder lösche Sie, muss ich daher leider den ganzen Makro anpassen.
Public Sub Prüfprogramm()
'Bereich A1:
If (Worksheets("Tabelle1").Range("E18") = "" And Worksheets("Tabelle1").Range("F18") = "") _
Or (Worksheets("Tabelle1").Range("E19") = "" And Worksheets("Tabelle1").Range("F19") = "") _
Or (Worksheets("Tabelle1").Range("E20") = "" And Worksheets("Tabelle1").Range("F20") = "") _
Or (Worksheets("Tabelle1").Range("E21") = "" And Worksheets("Tabelle1").Range("F21") = "") _
Or (Worksheets("Tabelle1").Range("E22") = "" And Worksheets("Tabelle1").Range("F22") = "") _
Or (Worksheets("Tabelle1").Range("E23") = "" And Worksheets("Tabelle1").Range("F23") = "") _
Or (Worksheets("Tabelle1").Range("E24") = "" And Worksheets("Tabelle1").Range("F24") = "") _
Then
Worksheets("Tabelle1").Activate
MsgBox "Achtung: Inkonsistente Angaben!" & vbNewLine & vbNewLine _
& "Fehlermeldung:" & vbNewLine _
& "Unschlüssige Angaben." & vbNewLine & vbNewLine _
Cancel = True
Exit Sub
End If
End Sub
Hoffe Ihr könnt mit da weiterhelfen!
Greetz