VBA UserForm mit Checkboxen welche Label Inhalt steuern sollen
#1
Hallo Gemeinde.

Ich habe eine Checkliste in Form einer UserForm gemacht. Diese beinhaltet mehrere Fragen welche man dann mit einer Checkbox beantworten kann. Eine Checkbox für Ja wenn aktiv Nein wenn inaktiv.
Ebenfalls habe ich eine LabelBox in dem Formular. Nun möchte ich, dass je nach Antwort die LabelBox Ihre Farbe so wie den Textinhalt wechselt.
Bei nur einer aktiven Checkbox würde der Code so aussehen (ja1 ist mein verwendeter Name für Checkbox1):

Private Sub ja1_Click()
If ja1.Value = True Then Label18.BackColor = &HFF00&
If ja1.Value = False Then Label18.BackColor = &HFF&
If ja1.Value = True Then Label18.Caption = "Kulanz kann angewendet werden"
If ja1.Value = False Then Label18.Caption = "STOP"
End Sub

Mein Problem ist jedoch, dass ich nicht nur Eine sondern 12 Checkboxen habe. Zusätzlich sollen 3 Checkboxen nur ausgewertet werden, wenn eine Andere Bestimmte Checkbox aktiviert wurde. Die Regel die ich bräuchte wäre:

Ist Checkbox 1-12 aktiviert dann ändere die Farbe von Label18 auf .... und setze die Caption "................."
Ist eine Checkbox nicht aktiv dann ändere die Farbe von Label18 auf ... und setze die Caption "..............."

Ist Checkbox 8 Aktiv blende Checkbox 10-12 ein
Ist Checkbox 8 nicht aktiv blende Checkbox 10-12 aus und setze sie auf Aktiv.

Leider habe ich keine Ahnung wie ich dies nun schreiben muss, dass VBA mich versteht. Ebenfalls weis ich nicht genau, wo ich den Code dann einsetzen müsste. Mein Code für eine Checkbox ist in der genannten Checkbox hinterlegt. Das was ich möchte, müsste ja Theoretisch in der UserForm eingepflegt werden, damit die ganze Checkliste geprüft wird?

Ich danke jetzt schon für die Hilfe.

LG
Demech
Top
#2
Hi,

verwende controls
anbei eine Demo

.xlsm   controls.xlsm (Größe: 19,41 KB / Downloads: 7)
lg Chris
Feedback nicht vergessen.
[Bild: v.gif]
3a2920576572206973742064656e20646120736f206e65756769657269672e
[-] Folgende(r) 1 Nutzer sagt Danke an chris-ka für diesen Beitrag:
  • Demech
Top
#3
Hallo Chris

Danke für die Schnelle Antwort. Es Funktioniert fast wie ich mir dies wünsche.
Jedoch habe ich in der UserForm mehrere Labels. Mit der von dir gezeigten Lösung, wird nun jedes Label einzeln nach einem Klick in eine Checkbox verändert. Ich möchte jedoch dass genau das Label18 verändert wird und sonst keines. Gebe ich dem Controller dieses Label an, gibt er mir den Fehler heraus, das er das Objekt nicht findet.

Ich habe nun folgende Lösung für mich gefunden, welche einerseits fiel zu schreiben gibt dafür genau das macht was ich mir wünsche:

Private Sub ja1_Click()
If ja1.Value = True And ja2.Value = True And ja3.Value = True And ja4.Value = True And ja5.Value = True And ja6.Value = True And ja7.Value = True And ja8.Value = True And ja10.Value = True And ja11.Value = True And ja12.Value = True Then
Label18.Caption = "Kulanz kann angewendet werden"
End If
If Label18.Caption = "Kulanz kann angewendet werden" Then
Label18.BackColor = &HFF00&
End If
If ja1.Value = False Then
Label18.Caption = "Stop"
End If
If Label18.Caption = "Stop" Then
Label18.BackColor = &HFF&
End If
End Sub

Diesen Code kann ich hinter jede Checkbox legen ("ja1" ist Bezeichnung der Checkbox). Somit wird gewährleistet, das die Ampel (Label18) erst auf Grün wechselt, wenn alle Punkte erfüllt sind. Entfernt man einen Punkt, wird die Ampel wieder auf Rot gesetzt.
Für die Problematik mit dem Ausblenden habe ich ja9 (Checkbox 9) verwendet und Folgenden Code hinterlegt:

Private Sub ja9_Click()
If ja9.Value = False Then ja10.Value = True
If ja9.Value = False Then ja10.Visible = False
If ja9.Value = True Then ja10.Visible = True
If ja9.Value = True Then ja10.Value = False
If ja9.Value = False Then ja11.Value = True
If ja9.Value = False Then ja11.Visible = False
If ja9.Value = True Then ja11.Visible = True
If ja9.Value = True Then ja11.Value = False
If ja9.Value = False Then ja12.Value = True
If ja9.Value = False Then ja12.Visible = False
If ja9.Value = True Then ja12.Visible = True
If ja9.Value = True Then ja12.Value = False
End Sub

Ich danke dir auf jeden Fall für deinen Code. Ich werde diese Art der Befehlsgebung sicherlich studieren. Habe ich noch nicht gekannt.

LG
Demech
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste