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

Forumthread: Checkboxen und Rahmen

Checkboxen und Rahmen
25.11.2015 18:48:39
Ingo
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

Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Checkboxen und Rahmen
25.11.2015 19:17:44
Daniel
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

Anzeige
AW: Checkboxen und Rahmen
25.11.2015 19:27:13
Daniel
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

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

Infobox / Tutorial

Checkboxen und Rahmen in Excel effizient nutzen


Schritt-für-Schritt-Anleitung

Um Checkboxen in einer UserForm mit unterschiedlichen Rahmen effektiv zu nutzen, kannst Du die folgende Schritt-für-Schritt-Anleitung befolgen:

  1. UserForm erstellen:

    • Öffne Excel und gehe zu den Entwicklertools.
    • Klicke auf "UserForm" und füge Deine Checkboxen und Rahmen hinzu.
  2. Makro im Modul der UserForm hinzufügen:

    • Füge das folgende Makro in das Modul ein:
      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
  3. Click-Event für jede Checkbox erstellen:

    • Erstelle für jede Checkbox ein Click-Event:
      Private Sub CheckBox1_Click()
      Call Einaus
      End Sub
  4. Testen:

    • Starte die UserForm und teste die Funktionalität der Checkboxen und Rahmen.

Häufige Fehler und Lösungen

  • Fehler: Checkboxen reagieren nicht.

    • Lösung: Stelle sicher, dass das Click-Event korrekt verknüpft ist und das Makro im richtigen Modul gespeichert wurde.
  • Fehler: Rahmen werden nicht ausgeblendet.

    • Lösung: Überprüfe die Namen der Rahmen und Checkboxen im Code. Sie müssen exakt mit den Namen in der UserForm übereinstimmen.

Alternative Methoden

Falls Du eine andere Lösung bevorzugst, kannst Du auch OptionButtons in Betracht ziehen. Diese ermöglichen eine einfachere Auswahl, da immer nur eine Option ausgewählt werden kann. In diesem Fall ist der Code jedoch einfacher und es entfällt das Ausblenden von Rahmen.


Praktische Beispiele

Hier ist ein Beispiel für eine einfache UserForm mit Checkboxen:

  1. UserForm mit 2 Rahmen:

    • Rahmen1 enthält Checkbox1 und Checkbox2.
    • Rahmen2 enthält Checkbox3.

    Mit dem oben angegebenen Code kannst Du die Sichtbarkeit von Rahmen basierend auf der Auswahl der Checkboxen steuern.


Tipps für Profis

  • Nutze Variablen im VBA-Code, um den Code besser lesbar und wartungsfreundlicher zu gestalten.
  • Überlege, ob Du Datenbindung für die Checkboxen nutzen kannst, um die Benutzerinteraktion zu optimieren.
  • Teste Deine UserForm regelmäßig, um sicherzustellen, dass alle Funktionen wie gewünscht arbeiten.

FAQ: Häufige Fragen

1. Wie kann ich die Checkboxen zurücksetzen?
Du kannst ein weiteres Makro erstellen, das alle Checkboxen auf "Unchecked" setzt, um die Auswahl zurückzusetzen.

2. Funktioniert das in allen Excel-Versionen?
Ja, jedoch könnte die Benutzeroberfläche in älteren Versionen leicht abweichen. Stelle sicher, dass Du mindestens Excel 2010 verwendest, um die beschriebenen Funktionen zu nutzen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige