Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema CheckBox
BildScreenshot zu CheckBox CheckBox-Seite mit Beispielarbeitsmappe aufrufen

Checkbox aktualisieren | Herbers Excel-Forum


Betrifft: Checkbox aktualisieren von: Lutz Petzold
Geschrieben am: 15.11.2009 00:58:43

Hallo,

habe im Arbeitsblatt eine Checkbox, schalte damit Vollbild ein / aus, wie kann ich diese Checkbox aktualisieren, wenn ich die Bildschirmansicht über die Menüleiste ändere?
Danke für Hilfe.

M.f.G. Lutz

  

Betrifft: AW: Checkbox aktualisieren von: Oberschlumpf
Geschrieben am: 15.11.2009 01:14:11

Hi Lutz

Ich hab eine Checkbox in die Tabelle eingefügt, für das Change-Ereignis der Box diesen Code verwendet

    
If Application.DisplayFullScreen = True Then
        Application.DisplayFullScreen = False
    Else
        Application.DisplayFullScreen = True
End If

und für alle Workbook/Sheet-Ereignisse im VBA-Editor Haltepunkte gestzt.

Wenn ich nun über Menü "Ansicht/Ganzer Bildschirm" das ausführe, was auch die Checkbox macht, passiert das für Excel "unbemerkt", es wird weder über die Box, noch über das Menü ein Ereignis ausgelöst.

Da ich aber nicht weiß, ob es vielleicht z Bsp mit API ne Möglichkeit gibt, lass ich den Thread mal offen.

Ciao
Thorsten


  

Betrifft: AW: Checkbox aktualisieren von: Lutz Petzold
Geschrieben am: 15.11.2009 01:23:57

Hallo Torsten,

danke für Deine Hilfe, aber ich sehe Du hast das Problem erkannt, vielleicht kann "uns" jemand helfen. (:-)

M.f.G. Lutz


  

Betrifft: hier mit eien Timer von: Tino
Geschrieben am: 15.11.2009 07:40:14

Hallo,

https://www.herber.de/bbs/user/65909.xls

Gruß Tino


  

Betrifft: AW: hier mit eien Timer von: Lutz Petzold
Geschrieben am: 15.11.2009 09:12:07

Hallo Tino,

dass sieht sehr gut aus, ich werde den Code so in meine Arbeitsmappe einbauen.
Danke.

M.f.G. Lutz


  

Betrifft: noch ein Vorschlag ... von: Matthias L
Geschrieben am: 15.11.2009 11:13:56

Hallo

Ich denke mal es geht Dir hier nur um die Optik
(daher der Versuch eine Checkbox auf Billdschirmmodi zu aktualisieren)

Sollte es nicht so sein könntest Du auch z.B. ein Commandbutton benutzen.
Ich würde das dann so machen:
Application.DisplayFullScreen = Not Application.DisplayFullScreen
Da ist eine Überprüfung "eh wurscht" (also egal) ;o)
Bei jedem Klick drehst Du so den Zustand um.

Gruß Matthias


  

Betrifft: Da brauchst du doch keinen Timer von: Nepumuk
Geschrieben am: 15.11.2009 10:54:01

Guten Morgen allerseits,

du musst doch nur das Event des Commanbarbuttons abfangen, dessen Funktion unterdrücken und ein eigenes Event in der Tabelle initiieren, welches wiederum das Click-Event der CheckBox initiiert.

' **********************************************************************
' Modul: DieseArbeitsmappe Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit

Private Sub Workbook_Activate()
    Tabelle1.CheckBox1.Value = False
    Application.DisplayFullScreen = False
    Tabelle1.Initialize_Class_ID_178
End Sub

Private Sub Workbook_Deactivate()
    Tabelle1.Terminate_Class
End Sub

' **********************************************************************
' Modul: Tabelle1 Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit

Private WithEvents objCommandBarButton As clsCommandBarButton

Private Sub CheckBox1_Click()
    Application.DisplayFullScreen = Not Application.DisplayFullScreen
    If CheckBox1.Value Then Call Initialize_Class_ID_2951 Else Call Initialize_Class_ID_178
End Sub

Private Sub objCommandBarButton_Click(blnValue As Boolean)
    CheckBox1.Value = blnValue
End Sub

Friend Sub Initialize_Class_ID_178()
    Set objCommandBarButton = Nothing
    Set objCommandBarButton = New clsCommandBarButton
    Set objCommandBarButton.Set_CommandBarButton = CommandBars.FindControl(ID:=178)
End Sub

Friend Sub Initialize_Class_ID_2951()
    Set objCommandBarButton = Nothing
    Set objCommandBarButton = New clsCommandBarButton
    Set objCommandBarButton.Set_CommandBarButton = CommandBars.FindControl(ID:=2951)
End Sub

Friend Sub Terminate_Class()
    CheckBox1.Value = False
    Set objCommandBarButton = Nothing
End Sub

' **********************************************************************
' Modul: clsCommandBarButton Typ: Klassenmodul
' **********************************************************************

Option Explicit

Public Event Click(blnValue As Boolean)

Private WithEvents mobCommandBarButton As CommandBarButton

Friend Property Set Set_CommandBarButton(objCommandBarButton As CommandBarButton)
    Set mobCommandBarButton = objCommandBarButton
End Property

Private Sub mobCommandBarButton_Click(ByVal Ctrl As Office.CommandBarButton, CancelDefault As Boolean)
    RaiseEvent Click(Ctrl.ID = 178)
    CancelDefault = True
End Sub

Gruß
Nepumuk


  

Betrifft: AW: Da brauchst du doch keinen Timer von: Tino
Geschrieben am: 15.11.2009 11:30:53

Hallo,
entweder habe ich Deinen Code falsch eingebaut oder irgendwas läuft da nicht richtig.

Unter xl2003 wird die CheckBox nur beim FullScreen gesetzt,
danach bleibt dieser aktiviert egal wie ich die ansicht schalte.

Unter xl2007 kann ich den FullScreen nicht mehr verlassen.

https://www.herber.de/bbs/user/65915.xls


Gruß Tino


  

Betrifft: AW: Da brauchst du doch keinen Timer von: Nepumuk
Geschrieben am: 15.11.2009 11:54:43

Hallo Tino,

funktioniert auch in deiner Mappe wie vorgesehen.

Häkchen setzen in der CheckBox -> "Ganzer Bildschirm" wird angezeigt
Häkchen rausnemen aus der CheckBox -> "Normale Ansicht" wird angezeigt

Commandbarbutton "Ganzer Bildschirm ein/aus" anklicken -> Häkchen wird gesetzt und "Ganzer Bildschirm" angezeigt
Commandbarbutton "Ganzer Bildschirm schließen" anklicken -> Häkchen wird rausgenommen und "Normale Ansicht" wird angezeigt.

Excel2007 ist was ganz anderes. Da gibt es zwar die "Standardbuttons" aus den Vorgängerversionen noch, die haben aber mit den Ribbons nichts zu tun und an die kommst du auch mit einer Klasse nicht heran. Da müsste man sich was ganz anderes einfallen lassen. Aber die Frage war ja für Excel 2003 gestellt.

Gruß
Nepumuk


  

Betrifft: AW: Da brauchst du doch keinen Timer von: Tino
Geschrieben am: 15.11.2009 12:13:05

Hallo,
mit xl2007 she ich noch ein, so siehts bei mir unter xl2003 aus.

Demo Video

https://www.herber.de/bbs/user/65919.zip


Gruß Tino


  

Betrifft: AW: Da brauchst du doch keinen Timer von: Nepumuk
Geschrieben am: 15.11.2009 12:29:33

Hallo Tino,

ok, über die Menuleiste hab ich nicht bedacht, aber null Problemo:

' **********************************************************************
' Modul: DieseArbeitsmappe Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit

Private Sub Workbook_Activate()
    Tabelle1.CheckBox1.Value = False
    Application.DisplayFullScreen = False
    Call Tabelle1.Initialize_Class
End Sub

Private Sub Workbook_Deactivate()
    Call Tabelle1.Terminate_Class
End Sub

' **********************************************************************
' Modul: Tabelle1 Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit

Private WithEvents objCommandBarButton As clsCommandBarButton

Private Sub CheckBox1_Click()
    Application.DisplayFullScreen = Not Application.DisplayFullScreen
    Call Initialize_Class
End Sub

Private Sub objCommandBarButton_Click(blnValue As Boolean)
    CheckBox1.Value = blnValue
End Sub

Friend Sub Initialize_Class()
    Set objCommandBarButton = Nothing
    Set objCommandBarButton = New clsCommandBarButton
    Set objCommandBarButton.Set_CommandBarButton1 = CommandBars.FindControl(ID:=178)
    Set objCommandBarButton.Set_CommandBarButton2 = CommandBars.FindControl(ID:=2951)
End Sub

Friend Sub Terminate_Class()
    CheckBox1.Value = False
    Set objCommandBarButton = Nothing
End Sub

' **********************************************************************
' Modul: clsCommandBarButton Typ: Klassenmodul
' **********************************************************************

Option Explicit

Public Event Click(blnValue As Boolean)

Private WithEvents mobCommandBarButton1 As CommandBarButton
Private WithEvents mobCommandBarButton2 As CommandBarButton

Friend Property Set Set_CommandBarButton1(objCommandBarButton As CommandBarButton)
    Set mobCommandBarButton1 = objCommandBarButton
End Property

Friend Property Set Set_CommandBarButton2(objCommandBarButton As CommandBarButton)
    Set mobCommandBarButton2 = objCommandBarButton
End Property

Private Sub mobCommandBarButton1_Click(ByVal Ctrl As Office.CommandBarButton, CancelDefault As Boolean)
    RaiseEvent Click(Ctrl.State = msoButtonUp)
    CancelDefault = True
End Sub

Private Sub mobCommandBarButton2_Click(ByVal Ctrl As Office.CommandBarButton, CancelDefault As Boolean)
    RaiseEvent Click(False)
    CancelDefault = True
End Sub

Gruß
Nepumuk


  

Betrifft: nicht schlecht, von: Tino
Geschrieben am: 15.11.2009 12:36:29

Hallo,
wäre ich nie drauf gekommen, respekt.


Noch einen schönen Sonntag.

Gruß Tino


  

Betrifft: AW: nicht schlecht, von: Lutz petzold
Geschrieben am: 19.11.2009 19:15:27

Hallo,

vielen Dank an alle.
Dieses Problem habe ich schon lange mit mir herum getragen, da ich schon öfter die Synchronisation von Menüleiste und Schaltflächen in Formularen gewünscht hätte. (bei Vollbildmodus, o. Ä.)
Ich werde die Funktion ausprobieren, habe aber derzeit noch einwenig Schwierigkeiten den Code zu verstehen. (Wird sich aber beim Ausprobieren hoffentlich erledigen!?)

M.f.G.
Lutz


Beiträge aus den Excel-Beispielen zum Thema "Checkbox aktualisieren"