Abspeichern nur m.gefüllten Pflichtfeldern
11.03.2011 19:01:15
Luc:-?
„Sehr geehrter Herr Rat“,
so förmlich ist es in Foren unüblich! ;-)
Lösung: (Voraussetzung 1.Blatt ist das mit den Pflichtfeldern!)
Schritt1: Bei geöffneter Mappe VBEditor öffnen und in deren VBA-Projekt im Strukturbaum DieseArbeitsmappe doppelklicken. Dann in die große freie Editorfläche daneben wechseln. Über der befinden sich 2 Auswahlbereiche. Links Workbook einstellen und dann rechts BeforeSave wählen → es wird der Rahmen dieser Ereignisprozedur angelegt (evtl andere schon bei Workbook-Auswahl angelegte können wieder entfernt wdn).
Schritt2: Die Leerzeile zwischen Prozedurkopf und -fuß durch Folgendes ersetzen…
Dim berPflicht As Range
Set berPflicht = Me.Sheets(1).Range("B3:C#,E3:G#,I3:I#,K3:L#,R3:R#") '#⇐letzteZeileNr
Cancel = Not berPflicht.Find(Empty, , xlValues, xlWhole, xlNext) Is Nothing
Jetzt wird das Speichern verhindert, wenn mind eine dieser Zellen leer ist, weil die so gefunden wird und dadurch Cancel = True wird, was den Speichervorgang abbricht. Von Cancel könnte dann noch eine entsprd Meldung abhängig gemacht wdn, die sogar das Leerfeld benennen könnte, wenn man dem Find-Objekt eine eigene Range-Variable zuordnet, bspw Dim berLeer As Range, und später Set berLeer = berPflicht.Find(Empty, , xlValues, xlWhole, xlNext) schreibt. Dann kann Cancel = Not berLeer Is Nothing lauten und anschließend If Cancel Then MsgBox "Sie haben leider ein Pflichtfeld übersehen!", vbExclamation + vbOKOnly, "Leeres Pflichtfeld " & berLeer.Address(0, 0) eingefügt wdn. Es wäre auch mögl, sämtliche Leer-Pflichtfelder aufzulisten bzw ihre Anzahl mitzuteilen.
Gruß + schöWE, Luc :-?