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

Forumthread: nur speichern wenn zellen/Bereiche nicht leer

nur speichern wenn zellen/Bereiche nicht leer
25.10.2007 16:30:00
maruseru
Hallo werte Profis
In einer Tabelle habe ich verschieden Zellen/Bereiche die nicht geschützt sind und in diese sollen Zahlen eingelesen werden. Nun darf das Arbeitsblatt nicht gespeichert werden, wenn nicht alle zellen ausgefüllt sind.
Auszufüllen sind:
D5:D6
D10:11
D15:16
G4
Wenn nicht ausgefüllt MsgBox "Bitte alle Felder ausfüllen!"
Gruss
Maruseru

Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Speichern nur wenn Pflichtfelder ausgefüllt
25.10.2007 16:47:00
NoNet
Hallo Maruseru,
das könntest Du mit diesem Makro lösen :


Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    Dim rngPflicht As Range, rngBereich As Range
    Dim intLeere As Integer
    Set rngPflicht = [D5:D6,D10:D11,D15:D16,G4]
    For Each rngBereich In rngPflicht.Areas
        intLeere = intLeere + Application.WorksheetFunction.CountBlank(rngBereich)
    Next
    If intLeere > 0 Then
        Cancel = True
        MsgBox "Bitte zuerst alle Pflicht-Felder ausfüllen !"
    End If
End Sub


Das Makro muss in das Klassenmodul "DieseArbeitsmappe" im VBA-Editor kopiert werden !
Gruß, NoNet

Anzeige
AW: Speichern nur wenn Pflichtfelder ausgefüllt
25.10.2007 17:58:00
maruseru
Hallo NoNet
Funktioniert einwandfrei, super. Frage: Kann ich diesen Code auch auf einen CommandButton legen?
Gruss
Marcello

Lege "ActiveWorkbook.Save" auf den Button _oT
25.10.2007 18:02:49
NoNet
_oT

AW: Lege "ActiveWorkbook.Save" auf den Button _oT
26.10.2007 08:17:00
maruseru
Hallo NoNet
Wenn ich den Code so eingebe kommt immer die Messagebox, auch wenn alle Bereiche ausgefüllt sind.
Gruss
Maruseru

Private Sub CommandButton3_Click()
Dim rngPflicht As Range, rngBereich As Range
Dim intLeere As Integer
Set rngPflicht = [D5:D6,D10:D11,D15:D16,D20:21,D25:26,D30:D31,D35:D36,G4]
For Each rngBereich In rngPflicht.Areas
intLeere = intLeere + Application.WorksheetFunction.CountBlank(rngBereich)
Next
If intLeere > 0 Then
Cancel = True
MsgBox "Please fill all necessary data!"
End If
ActiveWorkbook.Save
End Sub


Anzeige
Speichern auf einen Button legen
26.10.2007 10:22:00
NoNet
Hallo Maruseru,
zunächst einmal musst Du die Bereiche korrekt angeben :
Nicht D20:21 sondern D20:D21 - also bitte überall die Spaltenbezeichnungen mit angeben, ansonsten stoppt das Makro schon hier mit einer Fehlermeldung !
Hier der Code, der zu "CommandButton1" zugeordnet ist :
Private Sub CommandButton1_Click()
    Dim rngPflicht As Range, rngBereich As Range
    Dim intLeere As Integer
    Set rngPflicht = [D5:D6,D10:D11,D15:D16,D20:D21,D25:D26,D30:D31,D35:D36,G4]
    For Each rngBereich In rngPflicht.Areas
        intLeere = intLeere + Application.WorksheetFunction.CountBlank(rngBereich)
    Next
    If intLeere > 0 Then
        MsgBox "Please fill all necessary data!"
    Else
        On Error Resume Next 'Falls Speichern abgebrochen wurde
        If ActiveWorkbook.Saved Then
            ActiveWorkbook.Save
        Else
            Application.Dialogs(xlDialogSaveAs).Show
        End If
    End If
End Sub

Gruß, NoNet

Anzeige
AW: Speichern auf einen Button legen
26.10.2007 10:33:00
maruseru
Halo NoNet
Danke für den Code, funktioniert. Das mit den Bereichen hätte ich sehen müssen ;-))
Schönes Wochenende
Maruseru

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Pflichtfelder in Excel: Nur speichern, wenn Zellen ausgefüllt sind


Schritt-für-Schritt-Anleitung

Um sicherzustellen, dass bestimmte Zellen in Excel ausgefüllt sind, bevor Du die Datei speicherst, kannst Du ein VBA-Makro verwenden. Hier sind die Schritte, um dies zu implementieren:

  1. Öffne das Excel-Dokument, in dem Du die Pflichtfelder definieren möchtest.
  2. Drücke ALT + F11, um den VBA-Editor zu öffnen.
  3. Suche im Projekt-Explorer nach „DieseArbeitsmappe“ und doppelklicke darauf.
  4. Kopiere folgenden Code in das Modul:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    Dim rngPflicht As Range
    Dim rngBereich As Range
    Dim intLeere As Integer
    Set rngPflicht = [D5:D6, D10:D11, D15:D16, G4]
    For Each rngBereich In rngPflicht.Areas
        intLeere = intLeere + Application.WorksheetFunction.CountBlank(rngBereich)
    Next
    If intLeere > 0 Then
        Cancel = True
        MsgBox "Bitte alle Pflichtfelder ausfüllen!"
    End If
End Sub
  1. Schließe den VBA-Editor und speichere Deine Excel-Datei.

Jetzt wird beim Speichern überprüft, ob alle Pflichtfelder ausgefüllt sind. Wenn nicht, erscheint eine Meldung.


Häufige Fehler und Lösungen

  • Fehler 1: Das Makro funktioniert nicht.

    • Lösung: Stelle sicher, dass Du den Code im richtigen Modul eingefügt hast. Es sollte in „DieseArbeitsmappe“ sein.
  • Fehler 2: Die Meldung erscheint, obwohl alle Felder ausgefüllt sind.

    • Lösung: Überprüfe, ob die Zellreferenzen im Code korrekt sind und dass Du die Bereiche richtig angegeben hast (z.B. D20:D21 statt D20:21).

Alternative Methoden

Wenn Du kein VBA verwenden möchtest, kannst Du auch Datenüberprüfung in Excel nutzen, um sicherzustellen, dass bestimmte Zellen ausgefüllt sind. Gehe dazu wie folgt vor:

  1. Markiere die Zellen, die Du überprüfen möchtest.
  2. Klicke auf „Daten“ und dann auf „Datenüberprüfung“.
  3. Wähle „Benutzerdefiniert“ und gib die Formel =A1<>"" (ersetze A1 durch die erste zu überprüfende Zelle) ein.

Diese Methode verhindert, dass Nutzer leere Daten eingeben, jedoch nicht das Speichern der Datei.


Praktische Beispiele

Hier ist ein Beispiel für eine Excel-Tabelle, in der bestimmte Zellen ausgefüllt werden müssen:

Zelle Beschreibung
D5 Pflichtfeld 1
D6 Pflichtfeld 2
D10 Pflichtfeld 3
G4 Pflichtfeld 4

Wenn eine dieser Zellen leer bleibt und Du versuchst, die Datei zu speichern, wird die Meldung „Bitte alle Pflichtfelder ausfüllen!“ angezeigt.


Tipps für Profis

  • Nutze die On Error Resume Next-Anweisung, um das Makro robuster zu machen, falls beim Speichern ein Fehler auftritt.
  • Du kannst das Makro auch an einen CommandButton binden, um den Speicherprozess zu steuern. Hier ein Beispiel:
Private Sub CommandButton1_Click()
    ' Dein bestehender Code hier
    ActiveWorkbook.Save
End Sub
  • Achte darauf, dass alle Pflichtfelder in Deinem Code korrekt definiert sind, um Fehler zu vermeiden.

FAQ: Häufige Fragen

1. Kann ich mehrere Pflichtfelder in einer Excel-Datei definieren?
Ja, Du kannst beliebig viele Pflichtfelder definieren, indem Du sie im VBA-Code hinzufügst.

2. Was passiert, wenn ich das Makro nicht in „DieseArbeitsmappe“ einfüge?
Das Makro wird nicht ausgeführt, wenn Du versuchst, die Datei zu speichern. Stelle sicher, dass Du es im richtigen Modul platzierst.

3. Funktioniert dieser Code in Excel 2016?
Ja, der Code ist kompatibel mit Excel 2016 und neueren Versionen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige