Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Speichern erst dann, wenn alle Felder gefüllt sind

Speichern erst dann, wenn alle Felder gefüllt sind
31.07.2006 10:37:38
jpr
Hallo zusammen
und einen wunderschönen guten Morgen. Hab da mal ein kleines Problem und hoffe, dass es hier jmd gibt, der mir bei meinem Problemchen weiterhelfen kann.
Es geht um folgendes:
Bitte öffnet mal das angehängte Excel-File (https://www.herber.de/bbs/user/35467.xls). So soll das Formular aussehen, wenn es der Anwender öffnet. Anschließend sollen ALLE gelb markierten "Muss-Felder" (können Drop-Down-Felder als auch Eingabefelder sein) ausgefüllt werden. Erst wenn alle Felder ausgefüllt sind, soll der Anwender die Möglichkeit haben, das Formular zu speichern. Habe in nem anderen Forum einen Hinweis gefunden, wie ich mein Problem zu 90% lösen kann, jedoch leider nicht zu 100%. Mit dem folgenden Code kann ich erreichen, dass eine Speicherung erst dann möglich ist, wenn alle Felder gefüllt sind. Jedoch soll beim Öffnen des Formulars keine der Zellen belegt sein und erst durch den Anwender gefüllt werden.
Könnt ihr mein Problem nachvollziehen? Über den Code erreiche ich zwar, dass alle Felder gefüllt sein sollen, aber ich kann dadurch das "nackte" (keine Einträge) Formular nicht erstellen.
---------
Code:

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
For Each mf In [must]
If mf = "" Then
MsgBox "Zelle " & mf.Address & " darf nicht leer sein !", , _
"Datei nicht gespeichert"
Cancel = True
Exit For 'schlechter Stil, hier aber ausnahmsweise mal erlaubt ;-)
End If
Next
End Sub

---------
So, dann hoffe ich mal ihr könnt meinen Schilderungen folgen und mir weiterhelfen. Wäre euch sehr dankbar.
Grüße
JPR
https://www.herber.de/bbs/user/35467.xls
Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Speichern erst dann, wenn alle Felder gefüllt
31.07.2006 11:01:35
Hans
Hallo,
die Methodik stimmt nicht. Das Formular zu speichern und vorher die Daten zu löschen, macht ja keinen Sinn, da in diesem Fall das leere Formular gespeichert wird. Die Daten zu speichern und Formularwerte über das Workbook_Open-Ereignis beim Öffnen zu entfernen, macht auch keinen Sinn, da sie ja irgendwann gelesen werden sollen.
Der m.E. richtige Weg:
- Speichere das Formular als Mustervorlage (*.xlt)
- Wenn der Anwender das Formular aufruft, bekommt er immer eine Kopie dieses (leeren) Formulars
- Nach dem Ausfüllen des Formulars muss es unter einem neuen Namen gespeichert werden. Wie das geschehen soll (Schaltfläche, vorgegebener Name oder was auch immer) hängt von den Gegebenheiten ab.
gruss hans
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Speichern erst dann, wenn alle Felder gefüllt sind


Schritt-für-Schritt-Anleitung

  1. Eingabefelder erstellen: Öffne Excel und erstelle ein neues Arbeitsblatt. Markiere die Felder, die als "Muss-Felder" gelten sollen. Diese Felder sollten entweder als normale Eingabefelder oder als Drop-Down-Felder gestaltet sein.

  2. VBA-Editor öffnen: Drücke ALT + F11, um den VBA-Editor zu öffnen. Hier kannst du den notwendigen Code einfügen, um sicherzustellen, dass die Felder ausgefüllt sind, bevor das Formular gespeichert werden kann.

  3. Code hinzufügen: Füge den folgenden VBA-Code in das passende Modul ein:

    Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
       For Each mf In [must]
           If mf = "" Then
               MsgBox "Zelle " & mf.Address & " darf nicht leer sein !", , _
               "Datei nicht gespeichert"
               Cancel = True
               Exit For
           End If
       Next
    End Sub
  4. Mustervorlage speichern: Speichere das Formular als Mustervorlage (*.xlt). So erhält jeder Anwender beim Öffnen des Formulars eine leere Kopie.

  5. Testen: Öffne die Vorlage und versuche, das Formular zu speichern, ohne die Must-Felder auszufüllen. Du solltest eine Meldung erhalten, wenn eines der Felder leer ist.


Häufige Fehler und Lösungen

  • Fehler: Das Formular wird trotz leerer Felder gespeichert.
    Lösung: Überprüfe, ob die benannten Bereiche korrekt gesetzt sind und die Zellen wirklich als "must" deklariert sind.

  • Fehler: Meldungen erscheinen nicht.
    Lösung: Stelle sicher, dass das Makro aktiviert ist und dass der Code im richtigen Modul eingefügt wurde.


Alternative Methoden

Eine alternative Methode zur Validierung der Eingabefelder könnte die Verwendung von Datenüberprüfungen sein. Du kannst die Eingabefelder so einstellen, dass sie nur bestimmte Werte akzeptieren. Dies geschieht über die Funktion "Datenüberprüfung" in Excel.

Zusätzlich könntest du ein UserForm erstellen, das die Eingaben in einer benutzerfreundlichen Oberfläche ermöglicht. Hierbei kannst du sicherstellen, dass alle Felder gefüllt sind, bevor das Formular abgeschlossen werden kann.


Praktische Beispiele

Angenommen, du hast ein Formular mit den folgenden Must-Feldern: Name, Adresse, Telefonnummer. Du kannst die Zellen A1, A2 und A3 als "must" benennen. Mit dem oben angegebenen VBA-Code wird der Anwender gewarnt, wenn er versucht, das Formular zu speichern, ohne eines dieser Felder auszufüllen.

Ein Beispiel für die Verwendung von Drop-Down-Feldern: Du könntest in Zelle A4 ein Drop-Down-Feld mit Auswahlmöglichkeiten für den Status (z.B. Aktiv, Inaktiv) erstellen, das ebenfalls als Muss-Feld zählt.


Tipps für Profis

  • Nutze die Funktion "Datenüberprüfung", um sofortige Rückmeldungen zu geben, wenn ein Feld nicht korrekt ausgefüllt ist.
  • Erstelle benutzerdefinierte Fehlermeldungen, die spezifisch auf die jeweiligen Felder eingehen, um den Anwender gezielt zu informieren.
  • Verwende die Worksheet_Change-Ereignisprozedur, um dynamisch zu überprüfen, ob die Felder während der Eingabe ausgefüllt werden.

FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass alle Felder gefüllt sind, bevor ich das Formular speichere?
Durch den Einsatz des VBA-Codes, der vor dem Speichern des Formulars prüft, ob alle "Muss-Felder" ausgefüllt sind.

2. Was passiert, wenn ich das Formular nicht als Mustervorlage speichere?
In diesem Fall wird das leere Formular gespeichert, was zu Verwirrung führen kann, da die Anwender dann ein nicht ausgefülltes Formular erhalten.

3. Kann ich diese Methode in allen Excel-Versionen verwenden?
Ja, die beschriebenen Methoden sind in den meisten modernen Excel-Versionen anwendbar, insbesondere ab Excel 2007.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige