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

Verhindern des Speicherns unter bestimmter Bedingung

Forumthread: Verhindern des Speicherns unter bestimmter Bedingung

Verhindern des Speicherns unter bestimmter Bedingung
07.08.2025 09:54:44
Jürgen
Guten Morgen,

Ich habe eine Frage an alle Excelpertinnen und Excelperten. Gibt es, wahrscheinlich geht das nur über VBA, die Möglichkeit dass man eine Datei nicht speichern kann, wenn ein bestimmter Zellbereich, in meinem Fall die Zellen M5 bis M11 nicht alle mit Eingaben befüllt sind? Also sobald eine dieser Zellen leer sind, soll ein Hinweis kommen und das Speichern soll verweigert werden.
Danke schon mal vorab.

viele Grüße
Jürgen
Anzeige

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Verhindern des Speicherns unter bestimmter Bedingung
07.08.2025 11:08:48
Jürgen
Guten Morgen Velo,

vielen Dank für den Link zu einem Beispiel das ja genau auf das passt was ich suche.......nur.....ich verstehe nicht warum es bei mir nicht funktioniert. Ich habe den Code in VBA direkt so unter "Tabelle1" reinkopiert und so abgeändert:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
'Verhindert das speichern wenn nicht alle Temperaturfelder befüllt sind
If WorksheetFunction.CountA(Worksheets("Tabelle1").Range("M5,M6,M7,M8,M9,M10,M11,M13,M14,M15,M16")) 11 Then
MsgBox "Die Datei kann nicht gespeichert werden" & vbCrLf & _
"Alle gelb markierten Felder MÜSSEN befüllt sein!"
Cancel = True
End If
End Sub


Ich frage mich aber auch, wie ich, wenn es funktionieren würde, die Datei dann mit leeren Felder überhaupt als Vorlage gespeichert bekomme.....wenn das VBA Sub genau das verhindert.

Ich bin VBA-technisch nicht so bewandert. Wäre super wenn Du mir nochmal weiterhelfen könntest.
Danke vorab.
Jürgen
Anzeige
AW: Verhindern des Speicherns unter bestimmter Bedingung
07.08.2025 11:22:25
velo
Hi,

Ich habe den Code in VBA direkt so unter "Tabelle1" reinkopiert
Hier liegt der Fehler, ein Workbook-Event muss in "DieseArbeitsmappe" rein:
Userbild

Das Speichern-Problem kannst du wie folgt lösen:
Sub s()

Application.EnableEvents = False
ThisWorkbook.SaveAs Filename:="C:\Ordner\test", FileFormat:=xlOpenXMLWorkbookMacroEnabled
Application.EnableEvents = True
End Sub


vg
Velo
Anzeige
AW: Verhindern des Speicherns unter bestimmter Bedingung
07.08.2025 11:42:18
daniel
Hi
du kannst diese automatsichen Events einfach deaktivieren:
aktiviere in der Menükarte Entwickertools den Button Steuerelemente ENTWURFSMODUS
wenn der Entwurfsmodus aktiv ist, werden die Eventmakros nicht ausgeführt, dh die Datei sollte dann normal gespeichert werden.
die Menükarte "Entwicklertools" ist normalerweise ausgeblendet (dh der normale Anwender sieht sie nicht), aber wer Makros schreibt, sollte sie sich einblenden.

andere Möglichkeit: du gibst im Direktbereich den Befehl: Application.EnableEvents = False ein und speicherst dann. danach kannst du die Events wieder mit Application.EnableEvents = True im Direktbereich wieder aktivieren.
der Direktbereich ist Teil des VBA-Editors und kann über das Menü "Ansicht" ein- und ausgeblendet werden, dort heißt er "Direktfenster".

Gruß Daniel
Anzeige
AW: Verhindern des Speicherns unter bestimmter Bedingung
07.08.2025 11:59:31
daniel
Hi

der Code muss ins Modul "DieseArbeitsmappe"

kleine Optimierung
du kannst, da die Zellen alle Zusammenhängen, den Bereich auch als Block eingeben
If WorksheetFunction.CountA(Worksheets("Tabelle1").Range("M5:M16"))  11 Then

auch die 11 würde ich berechnen:
If WorksheetFunction.CountA(Worksheets("Tabelle1").Range("M5:M16"))  Worksheets("Tabelle1").Range("M5:M16").Cells.Count Then


du könntest das Speichern als Vorlage erlauben, wenn alle Zellen leer sind:

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

'Verhindert das speichern wenn nicht alle Temperaturfelder befüllt sind
Select Case WorksheetFunction.CountA(Worksheets("Tabelle1").Range("M5:M16"))
Case 0, 11
Case Else
MsgBox "Die Datei kann nicht gespeichert werden" & vbCrLf & _
"Alle gelb markierten Felder MÜSSEN befüllt sein!"
Cancel = True
End Select
End Sub


du könntest dir selbst das Speichern in allen Fällen erlauben.:

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

'Verhindert das speichern wenn nicht alle Temperaturfelder befüllt sind
if Environ("Username") > "DeinWindowsAnmeldename" Then
If WorksheetFunction.CountA(Worksheets("Tabelle1").Range("M5:M16")) 11 Then
MsgBox "Die Datei kann nicht gespeichert werden" & vbCrLf & _
"Alle gelb markierten Felder MÜSSEN befüllt sein!"
Cancel = True
end if
End If
End Sub


Gruß Daniel
Anzeige
AW: Verhindern des Speicherns unter bestimmter Bedingung
07.08.2025 12:11:50
Jürgen
Hallo Daniel, Hallo Velo,

einfach perfekt. Es hat genauso funktioniert. Vielen, vielen Dank für eure Hilfe.

Grüße
Jürgen
AW: Verhindern des Speicherns unter bestimmter Bedingung
07.08.2025 11:28:09
Jürgen
ok, super. Damit funktioniert das jetzt dass das speichern verhindert wird, aber ich hab grade noch das Problem die Datei dann so leer zu speichern. Du hast da in Deiner Antwort eine Sub s(), aber wo muss ich die reinmachen und wird die dann nicht mit abgespeichert und behebt dann die Blockade?

viele Grüße
Jürgen
Anzeige
AW: Verhindern des Speicherns unter bestimmter Bedingung
07.08.2025 11:34:55
velo
Du musst das Sub s in ein ganz normales Modul speichern, also nicht in Tabelle1 oder DieseArbeitsmappe.

Die Prozedur an sich ändert nichts an dem Workbook-Event, das ganze wird nur ausgeführt wenn du es auch wirklich manuell ausführst.
Ich würde dir aber empfehlen, wenn die Datei von mehreren Leuten benutzt wird und du nicht willst, dass die auf deinen Code zugreifen können dein VBA Projekt per Passwort zu schützen (https://learn.microsoft.com/en-us/answers/questions/4964549/how-do-i-lock-my-vba-project).
Anzeige
AW: Verhindern des Speicherns unter bestimmter Bedingung
07.08.2025 11:45:42
Jürgen
Hi Velo,

verstehe. Ich glaube ich bin kurz vor dem Ziel. Ich speichere das in ein neu erstelltes Modul und geh dann über debuggen und führe das Sub dann manuell aus. Das funktioniert soweit auch, nur wird die Datei dann als "nur" als Excelvorlage gespeichert, aber sie soll sich ja im Prinzip selbst überschreiben als Excelvorlage mit Makros. Geht das ?
viele Grüße
Jürgen
Anzeige
AW: Verhindern des Speicherns unter bestimmter Bedingung
07.08.2025 11:59:33
velo
Oh sorry, habs übersehen, dass du das als Vorlage brauchst.

Tausche im Sub s
xlOpenXMLWorkbookMacroEnabled
mit
xlOpenXMLTemplateMacroEnabled
Mehr Infos findest du hier: https://learn.microsoft.com/de-de/office/vba/api/excel.xlfileformat

Wenn du auf weitere Probleme zwecks speichern stößt, würde ich den Vorschlag von Daniel bzgl. Entwurfsmodus mal probieren.
Das dürfte eigentlich am intuitivsten sein.
Anzeige
AW: Verhindern des Speicherns unter bestimmter Bedingung
07.08.2025 12:09:17
daniel
Ich tue mich da mit dem xlt-Konzept noch ein bisschen schwer.
wenn eine Datei eine Vorlage sein soll, die nicht überschrieben werden darf, würde ich einfach nach dem Speichern in den Eigenschaften der Datei den Haken "Schreibgeschützt" aktivieren.
Das ist einfach zu ändern und braucht kein Passwort

Gruß Daniel
Anzeige
Anzeige
Anzeige
Live-Forum - Die aktuellen Beiträge
Datum
Titel
14.05.2026 13:31:09
14.05.2026 09:50:42
13.05.2026 19:14:18