Herbers Excel-Forum - das Archiv

UF mit Checkboxen

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

Betrifft: UF mit Checkboxen
von: Petra

Geschrieben am: 25.03.2008 13:24:34

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

Bild

Betrifft: AW: UF mit Checkboxen
von: Rudi Maintaire

Geschrieben am: 25.03.2008 13:41:16
Hallo,
das geht über eine eigene Klasse.
1. ein Klassenmodul einfügen. Name: clsCheckBox
Code:

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

Bild

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

Bild

Betrifft: AW: UF mit Checkboxen
von: Tino

Geschrieben am: 25.03.2008 13:48:37
Hallo,
mir fällt nur diese Variante ein

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

Bild

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

Bild

Betrifft: AW: UF mit Checkboxen
von: Daniel

Geschrieben am: 25.03.2008 13:51:42
Hi
alternativ zur Klasse kannst du auch anstelle der 20 Checkboxen eine Listbox mit 20 Elementen verwenden.
(wenns vom Design her möglich ist)
In den Eigenschaften stellst du dann "MultiSelect" auf TRUE und "ListSyle" auf "fmListStyleOption"
Über Listbox1.Selected(x) kannst du dann abfragen, ob ein bestimmtes Element aktiviert ist oder nicht.
Die Programmierung könnte dann so aussehen

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

Bild

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

Bild

Betrifft: AW: UF mit Checkboxen
von: Renee

Geschrieben am: 25.03.2008 14:00:50
Hi Petra,
Und noch eine Variante, mit Klassenmodul, aber ohne Tags:

' 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

Bild

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

 Bild