Checkboxen und Rahmen

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
Bild

Betrifft: Checkboxen und Rahmen
von: Ingo
Geschrieben am: 25.11.2015 18:48:39

Hallo Forum
Vielleicht kann mir ja irgendjemand von euch helfen
-Ich habe eine UserForm mit 10 Checkboxen und 4 Rahmen
- ein Rahmen enthält 3 Checkboxen
- 1 Rahmen enthält nur eine Checkbox
Mein Problem ist folgenden:
-Wenn ich Checkbox1 im Rahmen1 auswähle, dann sollen die Rahmen 2-4 ausgeblendet werden – und es sollen die Checkboxen 2-3 nicht mehr angeklickt werden können
Das habe ich hinbekomme, aber sehr umständlich das Ganze, und vor allem werden die
Codes lang und viel
- das 2. Problem ist, es soll die Auswahl wieder aufgehoben werden können, deshalb die Checkboxen und keine Optionbutton
Kann mir jemand eine bessere Lösung sagen bzw. schreiben??
Danke
Ingo
Datei:
https://www.herber.de/bbs/user/101805.xlsm

Bild

Betrifft: AW: Checkboxen und Rahmen
von: Daniel
Geschrieben am: 25.11.2015 19:17:44
Hi
ja, geht elegeanter
probier mal folgenendes:
1. dieses Makro im Modul der Userform "Auswahl_2":

Sub Einaus()
Dim crtl As Control
Frame1.Visible = (Frame1.Name = ActiveControl.Name Or ActiveControl.ActiveControl.Value = False) _
Frame2.Visible = (Frame2.Name = ActiveControl.Name Or ActiveControl.ActiveControl.Value = False) _
Frame3.Visible = (Frame3.Name = ActiveControl.Name Or ActiveControl.ActiveControl.Value = False) _
Frame4.Visible = (Frame4.Name = ActiveControl.Name Or ActiveControl.ActiveControl.Value = False) _
For Each crtl In ActiveControl.Controls
    crtl.Enabled = (crtl.Name = ActiveControl.ActiveControl.Name Or ActiveControl.ActiveControl. _
Value = False)
Next
End Sub
2. erstelle für jede Checkbox folgendes Click-Event:
Private Sub CheckBox1_Click()
Call Einaus
End Sub
zur Erläuterung des Codes:
in einer normalen Userform ist ActitveControl das Steuerelement, welches gerade den Focus hat, also bspw die zuletzt angeklickte Checkbox.
hast du jedoch Frames, so ist ActiveControl der Frame, in dem sich das zuletzt angeklickte Steuerelement befindet ActiveControl.ActiveControl ist dann das aktive Steuerelement innerhalb des Aktiven Frames.
Gruß Daniel

Bild

Betrifft: AW: Checkboxen und Rahmen
von: Daniel
Geschrieben am: 25.11.2015 19:27:13
Hier das Makro nochmal mit Variablen, ist vielleicht übersichtlicher:

Sub Einaus()
Dim crtl As Control, aFrm As Control, aChk As Control
Set aFrm = ActiveControl       'aktive Frame
Set aChk = aFrm.ActiveControl    'aktive Checkbox
Frame1.Visible = (Frame1.Name = aFrm.Name Or aChk.Value = False)
Frame2.Visible = (Frame2.Name = aFrm.Name Or aChk.Value = False)
Frame3.Visible = (Frame3.Name = aFrm.Name Or aChk.Value = False)
Frame4.Visible = (Frame4.Name = aFrm.Name Or aChk.Value = False)
For Each crtl In ActiveControl.Controls
    crtl.Enabled = (crtl.Name = aChk.Name Or aChk.Value = False)
Next
End Sub
gruß Daniel

Bild

Betrifft: AW: Checkboxen und Rahmen
von: Ingo
Geschrieben am: 25.11.2015 19:30:30
Hey Daniel
ich bin ja so begeistert von deiner Lösung
danke
Ingo

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Checkboxen und Rahmen"