Live-Forum - Die aktuellen Beiträge
Datum
Titel
17.04.2024 18:57:33
17.04.2024 16:56:58
Anzeige
Archiv - Navigation
1756to1760
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

Automat. Range-Erweiterung

Automat. Range-Erweiterung
11.05.2020 14:39:01
Dark
Hi Leute,
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

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Automat. Range-Erweiterung
11.05.2020 16:34:36
Matthias
Moin!
Um mal bei deinem Beispiel zu bleiben, was steht den in den Zeile 1 bzw. in Zeile 6 drin? Da beginnen ja die Bereiche 1 und 2 . Das könnte man suchen / auswerten und dann die Bereich neu bestimmen.
Wobei sich mir aus dem Code nicht erschließt, was die unterschiedlichen Zeilen in Spalte A bewirken sollen. Die kommen in dem Code ja nicht vor und werden auch nicht geprüft. Die unterschiedliche Anzahl lässt sich m.E. ermitteln, aber wo soll das dann angepasst werden?
VG
AW: Automat. Range-Erweiterung
11.05.2020 21:41:50
Dark
Hi Matthias,
erstmal vielen Dank für deine Antwort!
Bei den drei Bereichen handelt es sich um Kategorien, deren Auswahl durch bestätigt werden muss (Auswahl per "x"). Dort ist also ein Katalog aufgeführt, der bspw. In Spalte A ist und die Auswahl bei den jeweiligen Kategorien erfolgt in Spalte B, mit den jeweiligen Bereichen. Im Rahmen der Prüfung wird dann überprüft, ob alle Angaben in den weiteren Spalten vorgenommen wurden, wenn die Auswahl erfolgt ist.
Das Problem ist, dass ich nicht genau weiß, ob ich einen dynamischen Makro programmieren kann, der erkennt, dass neue Zeilen eingeführt worden sind oder gelöscht wurden und dann im Anschluss die Prüfung auf diese erweitert. Schwierig, da wir oben gezeigt, geprüft wird, ob die Auswahl getroffen wurde (dann in E18 "x" und F18 = ""), angegeben wurde, dass diese Kategorie nicht vorliegt (dann E18 = "" und F18 = "") oder keine Auswahl getroffen wurde, obwohl verpflichtend (dann beide = "", wie oben, was dann die obige Fehlermeldung auslöst).
Ich habe verschiedene Kontrollen implementiert, die auf ähnliche Weise vorgenommen werden und diese standardisiert und für die übrigen Reiter übernommen (insgesamt 14 Reiter). Demnach ist das Grundgerät überall identisch. Abweichungen ergeben sich nur in den Zeileb, da der Bereich A2 unterschiedlich lang ist, gemessen an den Zeilen.
Ich weiß nicht, ob das irgendwie über Resize funktioniert oder, ob man die einzelnen Zellen an einen Bereich knüpfen kann und das Makro so anpassen, dass dieses erkennt, wenn Zeilen in diesem Bereich hinzugefügt oder gelöscht werden und diese dann dem Bereich und seinen Kontrollen zuordnet. Das dann für alle drei Bereiche.
VG
Anzeige
AW: Automat. Range-Erweiterung
11.05.2020 22:35:25
Dark
Sorry meine obigen Angaben passten nicht ganz.
E18 = "x", die Auswahl wird bestätigt.
F18 " "x", die Auswahl wird abgelehnt.
1. Fall: E18 = "x" und F18 = "".
2. Fall: E18 = "" und F18 = "x".
3. Fall: E18 = "" und F18 = "".
AW: Automat. Range-Erweiterung
12.05.2020 11:00:01
Matthias
Moin!
Nochmal als Frage. Sind deine Bereiche 1 bis 3 durch Zwischenüberschriften etc. abgetrennt? Also was steht in Spalte A Zeile 1 und 6 (bspw. Überschrift oder leer)? Wie gesagt, muss man ja irgendwo schauen, wann Teil 2 losgeht und wann Teil 3 losgeht. Ansonsten kann man ja nicht unterscheiden, ob sich Teil2 verlängert / verkürzt hat.
Wenn man das weiß, kann man deinen Code anpassen.
VG
Anzeige
AW: Automat. Range-Erweiterung
12.05.2020 13:29:16
Dark
Moin!
Genau, die Bereiche 1-3 sind durch Überschriften getrennt.
Die Bereiche 1-3 wären dann die Überschriften. Denen sind dann die Kategorien bzw. Produkte untergliedert.
Ich habe eine beispielhafte Datei für einen Reiter hochgeladen (https:\/\/www.herber.de/bbs/user/137461.xlsx)
VG
AW: Automat. Range-Erweiterung
13.05.2020 15:10:25
Matthias
Moin!
Dann prüfe das in einer Schleife. Hier mal ein Beispiel. Dabei wird ab Zeile 18 angefangen. Könnte man auch anders machen, komme aber nicht dazu.
Public Sub Prüfprogramm()
'Bereich A1:
zeile = 18
Do While Left(Worksheets("Beispiel").Range("E" & zeile), 1)  "I"
If Worksheets("Beispiel").Range("E" & zeile) = "" And Worksheets("Beispiel").Range("F" & _
zeile) = "" Then
MsgBox "Achtung: Inkonsistente Angaben!" & vbNewLine & vbNewLine _
& "Fehlermeldung:" & vbNewLine _
& "Unschlüssige Angaben." & vbNewLine & vbNewLine
Exit Do
Else
zeile = zeile + 1
End If
Loop
End Sub

Bin erst nächsten Montag wieder da. Falls das Thema noch nicht erledigt ist, bitte einen neuen Thread eröffnen. Der alte könnte dann langsam ins Archiv gewandert sein.
VG
Anzeige
AW: Automat. Range-Erweiterung
13.05.2020 15:13:17
Dark
Hi Matthias,
vielen Dank!
Ich werde es mal ausprobieren und gebe dann nochmal Bescheid.
VG
AW: Automat. Range-Erweiterung
14.05.2020 13:19:56
Dark
Hi Matthias,
funktioniert super. Besten Dank für deine Hilfe!
VG

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige