Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
960to964
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
960to964
960to964
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

UF mit Checkboxen

UF mit Checkboxen
25.03.2008 13:24:00
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

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: UF mit Checkboxen
25.03.2008 13:41:16
Rudi
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

Anzeige
AW: UF mit Checkboxen
25.03.2008 13:47:00
Petra
Hallo Rudi
vielen Dank für Deinen grandiosen Tipp, auch viele Grüße an Deine Kühe
Einen schönen Tag noch, Petra

AW: UF mit Checkboxen
25.03.2008 13:48:37
Tino
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

Anzeige
AW: UF mit Checkboxen
25.03.2008 13:54:00
Petra
Hallo Tino
auch Dir vielen Dank für Deine Hilfe!
Liebe Grüße von Petra

AW: UF mit Checkboxen
25.03.2008 13:51:42
Daniel
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

Anzeige
AW: UF mit Checkboxen
25.03.2008 13:55:38
Petra
Hallo Daniel
auch Deine Variante hat was. Auch Dir vielen Dank und liebe Grüße
Petra

AW: UF mit Checkboxen
25.03.2008 14:00:00
Renee
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

Anzeige
AW: UF mit Checkboxen
25.03.2008 14:21:27
Petra
Grüß Dich Renée
auch Dir vielen Dank für Deinen Tipp und noch einen schönen Tag
Petra

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige