Prüfen, ob Nachbarzelle leer ist mit VBA
15.11.2023 17:26:04
Peer
Leider finde ich auch nach langen herumprobieren und mit meinen bescheidenen VBA-Kenntnissen nicht die Lösung für folgendes Problem.
Ich habe einen Jahreskalender unterteilt in mehrere Blätter. In diesen trage ich für jeden Tag Angaben in eine Zeile ein.
In Spalte B ist der Tag (Format TT), in Spalte C steht der dazugehörige Monat (MMM). In Spalte D soll ein Eintrag enthalten sein, der zeitnah eingetragen wird, zB. "Urlaub".
Der Bereich beginnt bei Zeile 12 und endet bei Zeile 42 (31 Tage).
Am Monatsende wird alles ausgedruckt. Dafür habe ich ein Sub für den Ausdruck erstellt (bzw. erstellen lassen).
Bis jetzt wird der Ausdruck gestartet, egal wie die Einträge aussehen und ob sie vollständig sind.
Jetzt habe ich folgendes in den Sub zum Ausdrucken erstellt...
Dim c As Variant
' Abfrage, das alle Zellen in Spalte D (Verwendung) ausgefüllt sind
For Each c In ActiveSheet.Range("D12:D42")
If c.Value = "" Then MsgBox "Mindestens ein Verwendungseintrag fehlt!" _
& vbNewLine & vbNewLine & "Der Ausdruck wird nur bei vollständig ausgefüllten Monat gestartet." _
, vbInformation + vbOKOnly, "Ein Eintrag fehlt": Exit Sub
Next
Nun hat nicht jeder Monat gleich 31 Tage und der Februar noch zusätzlich das Schaltjahr.
Meine Idee war, dass ich mit einer For each-Schleife einmal die Einträge der Spalte B12:B42 durchlaufen lasse und wenn in selber Zeile die Spalte D12:D42 (ebenfalls eine For Each-Schleife? oder mit c.offset(,2)?) leer ist, eine Meldung erscheint und der Ausdruck verhindert wird. Wenn aber beide Spalten ausgefüllt sind und auch ausgefüllt sein müssen, soll der Ausdruck starten.
Derzeitige Version würde den Ausdruck nur bei den Monaten mit 31 Tagen zulassen. Alle anderen Monate und auch der Monat, der unvollständig ist, die Meldung erzeugen.
Ich glaube, mein Ansatz ist nicht richtig. Vielleicht ist es auch die falsche Schleife.
Wie kann muss ich da vorgehen?
Anbei eine stark reduzierte Original-Datei. Im Tab "Erfassungsbelege" ist im Ribbon "eTime" der Button zum Ausdruck des aktive Sheet. Die Sub ist "con_druckenGrau"
https://www.herber.de/bbs/user/164310.xlsm
LG
Peer