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

VBA: CheckBox.Value > Speichern-Abfrage

Forumthread: VBA: CheckBox.Value > Speichern-Abfrage

VBA: CheckBox.Value > Speichern-Abfrage
27.10.2022 09:38:43
Jogi
Schönen Tag euch,
ich habe folgendes Problem:
Ich habe eine CheckBox die Zeilen aus-/einblendet. (Haken da = Zeilen eingeblendet)
Beim öffnen der Excel-Datei wird immer das Makro zum Zeilen einblenden ausgeführt.
Wenn zuvor mit ausgeblendeten Zeilen gespeichert wurde, bzw. die CheckBox.Value False ist, wird sie noch auf True gesetzt damit das wieder zusammenpasst (Haken da, Zeilen da.)
Zum Schluss habe ich noch ein ThisWorkbook.Saved = True damit keine Speicherabfrage kommt, wenn jemand nur was nachsehen will.
Doch dieses ändern der CheckBox1.Value wird vom ThisWorkbook.Saved - Status (=Wahr) nicht "erkannt" und beim schließen kommt jedes mal der Speichern-Dialog.
Wie löse ich das? Könnte die Datei einfach speichern lassen, aber dann ändert sich ja der Zeitstempel/Letzte Bearbeiter, obwohl evtl. an sich nichts geändert wurde.
Schon mal vielen Dank
Gruß Jogi
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: VBA: CheckBox.Value > Speichern-Abfrage
27.10.2022 09:59:42
Rudi
Hallo,
bei mir bleibt's TRUE.

Private Sub Workbook_Open()
Dim shp As Shape
With Sheets(1)  'anpassen
.Rows.Hidden = False
For Each shp In .Shapes
With shp.DrawingObject
.Object.Value = .progID = "Forms.CheckBox.1"
End With
Next
End With
Me.Saved = True
End Sub
Gruß
Rudi
Anzeige
AW: VBA: CheckBox.Value > Speichern-Abfrage
27.10.2022 19:07:38
Jogi
Hallo, danke für deine Antwort.
ja, der Wert von Me.Saved ist True, aber trotzdem kommt beim schließen eine Speichern-Abfrage.
Habe eine neue Datei erstellt. Nur eine, nicht angehakte, CheckBox mit folgenden Code.
Wenn ich die Datei frisch öffne und den Code aus führe ist zum Schluss das MsgBox ThisWorkbook.Saved wieder True. Trotzdem kommt die "wollen sie Speichern?"-Abfrage

Sub test()
MsgBox ThisWorkbook.Saved   ' >> TRUE
Dim shp As Shape
With Sheets("Tabelle1")
.Rows.Hidden = False
For Each shp In .Shapes
With shp.DrawingObject
.Object.Value = .progID = "Forms.CheckBox.1"
End With
Next
End With
'Zum Vergleich mit nur folgendem Code. Kommt das gleiche raus:
'CheckBox1.Value = True
MsgBox ThisWorkbook.Saved  '>> FALSE
ThisWorkbook.Saved = True
MsgBox ThisWorkbook.Saved '>> TRUE
End Sub
Excel schließen >> Speicher abfrage kommt.
Kann das an einer Excel-Einstellung liegen?
Gruß Jogi
Anzeige
AW: VBA: CheckBox.Value > Speichern-Abfrage
28.10.2022 10:40:42
Rudi
hast du vielleicht noch andere Prozeduren, die Änderungen vornehmen?
AW: VBA: CheckBox.Value > Speichern-Abfrage
28.10.2022 18:20:36
Jogi
Nein, dachte ich zuerst auch und hab ewig alles durchgesehen.
Hab dann extra eine neue, leere Datei erstellt damit ich das ausschließen kann. Nur mit einer Checkbox und den von mir geposteten Code. Sonst gibt's nichts anderes in der Datei. Und trotzdem das selbe Phänomen.
Ist mir echt ein Rätsel.
Anzeige
AW: VBA: CheckBox.Value > Speichern-Abfrage
29.10.2022 08:34:07
Oberschlumpf
Moin Jogi,
spiel mal n bisschen mit dem BeforeClose-Ereignis rum.
Ich hab zu deinem Problem diesen Link gefunden:
https://www.herber.de/forum/archiv/520to524/523204_ThisWorkbookSaved_True.html
Vielleicht hilft dir das ja weiter, oder?
Ich hab mal ne Bsp-Datei erstellt, deine CheckBox + deinen Code im allgem. Modul eingefügt = nach Start deines Makros gleicher Fehler, Excel maßt sich an, trotzdem zu fragen, ob gespeichert werden soll^^ :-)
Deinen Code ins Bef.Clos-Ereign eingefügt, klick auf's X oben rechts, dein Makro wird gestartet - und Datei wird geschlossen, OHNE, dass Excel noch mal nachfragt...yeah :-)
Ciao
Thorsten
Anzeige
AW: VBA: CheckBox.Value > Speichern-Abfrage
29.10.2022 12:03:35
Jogi
Hallo Thorsten,
ahh super, ja das klappt. Danke für den Tipp und deine Mühe.
Gruß Jogi
;
Anzeige

Infobox / Tutorial

VBA: CheckBox.Value und die Speichern-Abfrage in Excel


Schritt-für-Schritt-Anleitung

Um eine CheckBox in Excel VBA zu verwenden und die Speichern-Abfrage zu umgehen, kannst du folgende Schritte befolgen:

  1. Öffne Excel und erstelle ein neues Arbeitsblatt.

  2. Füge eine CheckBox hinzu:

    • Gehe zu "Entwicklertools" > "Einfügen" und wähle die CheckBox aus.
  3. Öffne den VBA-Editor mit ALT + F11.

  4. Füge den folgenden Code in das "ThisWorkbook"-Modul ein:

    Private Sub Workbook_Open()
       Dim shp As Shape
       With Sheets(1)  ' Anpassen auf dein Arbeitsblatt
           .Rows.Hidden = False
           For Each shp In .Shapes
               With shp.DrawingObject
                   .Object.Value = .progID = "Forms.CheckBox.1"
               End With
           Next
       End With
       Me.Saved = True
    End Sub
  5. Teste den Code indem du die Datei speicherst und schließt. Achte darauf, dass die CheckBox den Status TRUE oder FALSE richtig anzeigt.


Häufige Fehler und Lösungen

  • Speichern-Abfrage erscheint trotz Me.Saved = True:

    • Stelle sicher, dass du keine anderen Prozeduren hast, die Änderungen vornehmen, die den Status beeinträchtigen könnten.
  • CheckBox bleibt nicht wie gewünscht:

    • Überprüfe, ob der richtige Name der CheckBox verwendet wird (z.B. CheckBox1.Value).

Alternative Methoden

Wenn du das Problem mit der Speichern-Abfrage weiterhin hast, kannst du Folgendes ausprobieren:

  • BeforeClose-Ereignis:

    Private Sub Workbook_BeforeClose(Cancel As Boolean)
       ' Hier kannst du deinen Code einfügen, um die CheckBox zu verarbeiten
       ThisWorkbook.Saved = True
    End Sub
  • Verwende ein allgemeines Modul anstelle des "ThisWorkbook"-Moduls für bestimmte Funktionen.


Praktische Beispiele

Hier ist ein einfaches Beispiel, um den Status der CheckBox zu überprüfen und entsprechend zu handeln:

Sub CheckCheckBox()
    If CheckBox1.Value = True Then
        MsgBox "Die CheckBox ist aktiviert."
    Else
        MsgBox "Die CheckBox ist deaktiviert."
    End If
    ThisWorkbook.Saved = True
End Sub

Führe diese Prozedur aus, nachdem du die CheckBox geändert hast, um sicherzustellen, dass die Abfrage nicht erscheint.


Tipps für Profis

  • Verwende die checkbox vba true false-Logik, um den Status der CheckBox effizient zu prüfen und zu ändern.
  • Dokumentiere deinen Code für zukünftige Referenzen, besonders wenn du mit vba excel checkbox value-Operationen arbeitest.
  • Teste deine Makros gründlich, um unerwartete Fehler bei der Anwendung zu vermeiden.

FAQ: Häufige Fragen

1. Warum bleibt die CheckBox immer auf TRUE?
Das könnte an einer anderen Prozedur liegen, die den Wert der CheckBox verändert. Überprüfe alle relevanten Codeabschnitte.

2. Wie kann ich die Abfrage beim Schließen der Datei vollständig umgehen?
Stelle sicher, dass du ThisWorkbook.Saved = True im BeforeClose-Ereignis verwendest, um die Abfrage zu verhindern.

3. Was ist der Unterschied zwischen CheckBox1.Value und Me.CheckBox1.Value?
Me.CheckBox1.Value bezieht sich auf die CheckBox innerhalb des aktuellen Objektes (z.B. UserForms), während CheckBox1.Value nur im Kontext des Arbeitsblattes gilt.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige