![]() |
Betrifft: UF mit Checkboxen
von: Petra
Servus alle Excelianer(innen)
ich habe eine UF mit 20 Checkboxen.
Für jede Checkbox habe ich immer den gleichen Code mit jeweils geringfügigen Änderungen (fett)
Private Sub CheckBox1_Click() If CheckBox1.Value = True Then Sheets("Liste").Cells(2, 1) = 1 Else Sheets("Liste").Cells(2, 1) = "" End If End Sub
Private Sub CheckBox2_Click() If CheckBox2.Value = True Then Sheets("Liste").Cells(3, 1) = 2 Else Sheets("Liste").Cells(3, 1) = "" End If End Sub
usw. wie bereits gesagt, für 20 Checkboxen,
meine Frage: geht das nicht kürzer zu programmieren??
Liebe Grüße Petra
![]() |
Betrifft: AW: UF mit Checkboxen
von: Rudi Maintaire
Public WithEvents objCBX As MSForms.CheckBox Private Sub objCBX_click() With Sheets("Liste").Cells(objCBX.Tag+1, 1) If objCBX = True Then .Value = objCBX.Tag Else .Value = "" End If End With End Sub
2. In ein Modul:
Public oclsCheckBox(1 To 20) As New clsCheckbox
3. Im Code der UF:
Private Sub UserForm_Initialize() Dim i As Integer For i = 1 To 20 Set oclsCheckBox(i).objCBX = Me.Controls("CheckBox" & i) oclsCheckBox(i).objCBX.Tag = i Next End Sub
Gruß
Rudi
Eine Kuh macht Muh, viele Kühe machen Mühe
![]() |
Betrifft: AW: UF mit Checkboxen
von: Petra
Geschrieben am: 25.03.2008 13:47:36
Hallo Rudi
vielen Dank für Deinen grandiosen Tipp, auch viele Grüße an Deine Kühe
Einen schönen Tag noch, Petra
![]() |
Betrifft: AW: UF mit Checkboxen
von: Tino
Private Sub CheckBox1_Click() Schreiben CheckBox1, 1 End Sub Private Sub CheckBox2_Click() Schreiben CheckBox2, 2 End Sub Private Sub CheckBox3_Click() Schreiben CheckBox3, 3 End Sub Sub Schreiben(ZuSt As Boolean, Zelle As Integer) With Sheets("Liste") If ZuSt = True Then .Cells(1 + Zelle, 1) = Zelle Else .Cells(1 + Zelle, 1) = "" End If End With End Sub
Gruß
Tino
![]() |
Betrifft: AW: UF mit Checkboxen
von: Petra
Geschrieben am: 25.03.2008 13:54:30
Hallo Tino
auch Dir vielen Dank für Deine Hilfe!
Liebe Grüße von Petra
![]() |
Betrifft: AW: UF mit Checkboxen
von: Daniel
Private Sub Listbox1_Change() dim i as long for i = 0 to Listbox1.ListCount-1 if listbox1.selectet(i) = true then Sheets("Liste").cells(i+2,1).value = i + 1 else Sheets("Liste").cells(i+2).value = "" end if next end sub
Gruß, Daniel
ps. beachte: die Indexzählung der Listboxelemente beginnt bei 0
![]() |
Betrifft: AW: UF mit Checkboxen
von: Petra
Geschrieben am: 25.03.2008 13:55:38
Hallo Daniel
auch Deine Variante hat was. Auch Dir vielen Dank und liebe Grüße
Petra
![]() |
Betrifft: AW: UF mit Checkboxen
von: Renee
' Dieser Code gehört in die USERFORM Option Explicit Dim objCBX(1 To 20) As New clickCBX Private Sub UserForm_Initialize() Dim objCtl As Control Dim lx As Long For Each objCtl In Me.Controls If TypeName(objCtl) = "CheckBox" Then objCtl.Value = Not (Sheets("Liste").Cells(lx + 1, 1) = "") lx = lx + 1 Set objCBX(lx).thisCheckBox = objCtl End If Next End Sub ' Dieser Code gehört in ein Klassenmodul mit dem Namen clickCBX Option Explicit Public WithEvents thisCheckBox As MSForms.CheckBox Private Sub thisCheckBox_Click() Sheets("Liste").Cells(Val(Mid(thisCheckBox.Name, 9, 2)) + 1, 1) = _ IIf(thisCheckBox, Val(Mid(thisCheckBox.Name, 9, 2)), "") End Sub
GreetZ Renée
![]() |
Betrifft: AW: UF mit Checkboxen
von: Petra
Geschrieben am: 25.03.2008 14:21:27
Grüß Dich Renée
auch Dir vielen Dank für Deinen Tipp und noch einen schönen Tag
Petra
![]() |