VBA - nicht schliessen wenn Pflichtfelder leer
MT
ich habe mal wieder ein kleines Problem in Excel - was für euch sicherlich (hoffentlich) ne Kleinigkeit ist.
Und zwar habe ich eine Mustervorlage erstellt, bei der gewissen Pflichtfelder auszufüllen sind. Diese sind für eine bessere Sichtbarkeit entsprechend grau hinterlegt.
Diese Felder müssen ausgefüllt sein, andernfalls soll das Dokument nicht zu schließen sein.
Das Ganze hab ich versucht, über ne VBA Geschichte zu lösen.
Da ich selbst in VBA nicht wirklich nen Genie bin, hab ich mir dieses aus den tiefen des Internets bereits zusammen geklaut.
Hier nun die VBA-Programmierung im Detail:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Cancel = Not Worksheets("Tabelle1").Range("D14") ""
Cancel = Not Worksheets("Tabelle1").Range("D15") ""
Cancel = Not Worksheets("Tabelle1").Range("D16") ""
Cancel = Not Worksheets("Tabelle1").Range("I15") ""
Cancel = Not Worksheets("Tabelle1").Range("I16") ""
Cancel = Not Worksheets("Tabelle1").Range("D26") ""
Cancel = Not Worksheets("Tabelle1").Range("D27") ""
Cancel = Not Worksheets("Tabelle1").Range("D28") ""
Cancel = Not Worksheets("Tabelle1").Range("I27") ""
Cancel = Not Worksheets("Tabelle1").Range("I28") ""
Cancel = Not Worksheets("Tabelle1").Range("I12") ""
Cancel = Not Worksheets("Tabelle1").Range("I24") ""
End Sub
Mein Problem ist nun allerdings, dass sich in meinen Tests herausgestellt hat, dass eben nicht alle diese grauen Zellen ausgefüllt sein müssen, um das Dokument zu schließen.
(Datei unter https://www.herber.de/bbs/user/76593.xlt abrufbar)
Woran liegt das? Wo liegt mein logischer Fehler? Oder kann über diesen Weg nur eine bestimmte Anzahl an Zellen überprüft werden?
Vielleicht noch zur Info: Ich habe es geschafft, die Mustervorlage ohne jeglichen Inhalt zu speichern, indem ich zunächst das nicht ausgefüllte Dokument gespeichert habe - und dann im Anschluss Excel über den Task-Manager abgeschossen habe.
Schließlich ist ja nur das Schließen bei Nicht-Ausfüllen unterdrückt, nicht aber das speichern.
Im zweiten Schritt will ich dann das ganze noch aufs Drucken erweitern. Das müsste dann ja _ eigentlich das Gleiche sein, nur das ich das
Private Sub Workbook_BeforeClose(Cancel As Boolean) .... End Sub
durch
Private Sub Workbook_BeforePrint(Cancel As Boolean) .... End Sub
ersetzen müsste,oder?Besten Dank für eure Hilfe!
Markus