Verflixte Checkbox

Hallo Experten,
ich steh mal wieder auf der Leitung. Folgendes Problem :
Ich möchte beim Start eine Userform anzeigen lassen, das funktioniert.
In der UserForm ist ein Kontrollkästchen ( Diesen Dialog nicht mehr anzeigen ).
Müsste also beim nächsten Start die Userform nicht mehr erscheinen.

Im Workbook steht folgendes

If userform2.checkbox1.Value = False Then
Userform2.Show
End If

Beim Start zeigt er auch die UserForm an. Dann klicke ich die Checkbox an.

Private Sub Checkbox_Click()
Ceckbox.Value = True
End Sub

Dann klicke ich den OK Button an
Private Sub CommandButton_Click()
Unload Me
End Sub

Jetzt habe ich das Problem, dass der Value Wert der Checkbox nicht in True übergeht.
Was mache ich falsch ? Wer weis Rat ?

Hilfesuchen fragt Peter

Moin Peter!

dein Problem hat weniger mit der Checkbox zu tun, als mit der Tatsache, dass du den WERT der Checkbox permanent speichern musst.
Zu Beginn (AutoExec-Makro?) musst du also diesen „externen Speicher“ abfragen. Als solcher kommt eine Datei, Registry-Key oder eine Dokumenteneigenschaft in Frage. Ich verwende letzteres!

und so geht’s:
In deinem Makro, dass die UserForm aufruft, schreibst du:

' (...)
Dim w As Boolean

On Error GoTo keinProperty
w = ActiveWorkbook.CustomDocumentProperties("AnzeigeWelcome")
If w Then
 'UserForm anzeigen
 UserForm2.Show
Else
 'UserForm nicht anzeigen
End If
Exit Sub

keinProperty:
 ActiveWorkbook.CustomDocumentProperties.Add Name:="AnzeigeWelcome", LinkToContent:=False, Type:=msoPropertyTypeBoolean, Value:=True

 ' Form anzeigen
 UserForm2.Show
End Sub

Je nachdem, was in der Dokumenteigenschaft steht, wird das Formular angezeigt oder nicht.
Wenn es eine Dokumenteneigenschaft nicht gibt, wird sie erzeugt und das Formular angezeigt (Programmzeilen unterhalb „keinProperty“).
Die Dokumenteneigenschaften findest du unter:
Datei->Eigenschaften im Register „Anpassen“


Das Klick-Ereignis in der UserForm2 für die CheckBox1 muss so lauten:

Private Sub CheckBox1\_Click()
If CheckBox1.Value Then
 ' nicht mehr anzeigen
 ActiveWorkbook.CustomDocumentProperties("AnzeigeWelcome") = False
Else
 ' anzeigen
 ActiveWorkbook.CustomDocumentProperties("AnzeigeWelcome") = True
End If
End Sub

Viel Spaß!
Cheers!
Hawky

Hi Hawky,
genau das habe ich gesucht, vielen Dank dafür.
Dafür gibts natürlich ein Sternchen.

Bitte gestatte mir noch eine Zusatzfrage:
Wie reaktiviere ich denn diese UserForm, wenn sie einmal ausgelöst wurde?

Dankende Grüße Peter

Hi Hawky,
Bitte gestatte mir noch eine Zusatzfrage:
Wie reaktiviere ich denn diese UserForm, wenn sie einmal
ausgelöst wurde?

Hab ich gerade selbst rausgefunden.
Nochmals Danke für deine Unterstützung.

Gruß Peter