Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1764to1768
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Vereinfachung Befehlskette

Vereinfachung Befehlskette
19.06.2020 07:38:03
Mike
Hallo!
Aufgrund meiner geringen VBA Kenntnisse schreibe ich offensichtlich zu lange Befehlsketten und ich habe noch nicht durchschaut, wie man diese verkürzen kann. Ich hoffe Ihr könnt mir helfen.
Ich habe auf einer UserForm 53 Checkboxen, welche nach dem Anklicken jeweils ein Label einfärbt. Funktioniert soweit, jedoch wäre meine Frage, ob man die nachstehende Befehlskette verkürzen kann?
Das ganze geht bis zur Kalenderwoche (KW) 53.
Private Sub UserForm_Activate()
' Anpassen der Farbe des Label, wenn Hakerl gesetzt wird
With UserForm1
If .CheckBox_KW1.Value = True Then
.Image1.BackColor = RGB(240, 190, 135)
Else
.Image1.BackColor = RGB(228, 228, 228)
End If
If .CheckBox_KW2.Value = True Then
.Image2.BackColor = RGB(240, 190, 135)
Else
.Image2.BackColor = RGB(228, 228, 228)
End If
If .CheckBox_KW3.Value = True Then
.Image3.BackColor = RGB(240, 190, 135)
Else
.Image3.BackColor = RGB(228, 228, 228)
End If
If .CheckBox_KW4.Value = True Then
.Image4.BackColor = RGB(240, 190, 135)
Else
.Image4.BackColor = RGB(228, 228, 228)
End If
End With
End Sub
usw...…..
Herzlichen Dank im Voraus!

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Vereinfachung Befehlskette
19.06.2020 07:46:07
Hajo_Zi
der Code kann entfallen, setze gleich im VBA Editor die Farbe.
Bei Activate wird der Zustand der Checkbox nicht geändert.

AW: Vereinfachung Befehlskette
19.06.2020 08:09:53
Daniel
Nicht unbedingt Hajo.
Die Checkboxen könnten über Controlsource mit Ausgabezellen verknüpft sein und dann kann der Zustand beim Start der Userform jedesmal anders sein.
Und wenn nicht, über diesen Code ist sichergestellt, dass Checkboxzustand und Bildfarbe zueinander passen.
Ansonsten könnte es bei 53 durchaus passieren, dass man mal einen Fehler macht.
Gruß Daniel
AW: Vereinfachung Befehlskette
19.06.2020 08:00:19
EtoPHG
Hallo Mike,
Generelle Sub, damit kannst Du diese bei Activate der Userform, aber auch bei jedem Checkbox_Change einsetzen:
Private Sub UserForm_Activate()
setKW
End Sub
Private Sub CheckBox_KW1_Change()
setKW
End Sub '...to _KW53
Sub setKW()
Dim ctrl As Control, ctrlImg As Image
For Each ctrl In Me.Controls
If Left$(ctrl.Name, 11) = "CheckBox_KW" Then
Set ctrlImg = Me.Controls("Image" & IIf(Len(ctrl.Name) = 12, _
Right$(ctrl.Name, 1), _
Right$(ctrl.Name, 2)))
ctrlImg.BackColor = RGB(228, 228, 228)
If ctrl.Value Then ctrlImg.BackColor = RGB(240, 190, 135)
End If
Next ctrl
End Sub
Gruess Hansueli
Anzeige
AW: Vereinfachung Befehlskette
19.06.2020 08:02:40
Daniel
Hi
In der Userform lassen sich die Steuerelemente auch indirekt über die Funktion Controls("Steuerelementname") ansprechen.
Hier kannst du dann den Steuerelementnamen "berechnen" bzw auch über Variablen zusammensetzen, so dass du hier mit einer Schleife arbeiten kannst:
For x = 1 To 53
With Userform1
If .Controls("CheckBox_KW" & x) Then
.Controls("Image" & x).BackColor = ...
Else
End if
End with
Next
Außerdem, das If Then kannst du hier mit der Funktion IIf als Einzeiler schreiben:
.Image1.BackColor = IIf(.CheckBox_KW1.Value, RGB(240, 190, 135), RGB(228, 228, 228))

Wenn du beides kombiniert, hast du den kurzen knackigen Code.
Gruß Daniel
Anzeige
AW: Vereinfachung Befehlskette
19.06.2020 09:45:25
Mike
Hallo Daniel, EtoPHG und Hajo_Zi!
Herzlichen Danke für die schnelle Hilfe. Hab mich für die Variante von Daniel entschieden und funktioniert einfach toll.
Allgemein muss ich sagen, dass Ihr wirklich tolle Helfer seid, die wirklich schnelle und gut mich (als Anfänger) unterstützen - eine super Plattform! DANKE nochmal!
LG
Mike

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige