Registriert seit: 15.04.2014
Version(en): 2007, 2010, 2019
Heje Excelfreunde,
Auf UF befinden sich 100 Checkbox'es. Wie anhand des Bsp. gezeigt, werden auf der UF mit den CheckBox'es
viele Ausschlußmöglichkeiten tabellenartig erstellt. Auf Grund der Großen Anzahl müsste aber für jedes Click-Ereignis ein Code wie im im Bsp. gezeigt erstellt werden.
Gibt es eine elegantere Form/Möglichkeit , die CheckBox'es "1-100" anzusprechen oder muss für jede ein Click-Ereignis erstellt werden...
Code:
Private Sub CheckBox1_Click()
If CheckBox1.Value = True Then
CheckBox1.Caption = "Ausschluß"
CheckBox1.BackColor = &H80000016
Else
CheckBox1.Caption = ""
CheckBox1.BackColor = &H80000004
End If
End Sub
Vielen Dank
--Janosch
Excel 2019 (64bit) Win 10 Pro (64bit)
Registriert seit: 25.04.2016
Version(en): 2013
Kannst Du
das auf Checkboxen umsetzen
Folgende(r) 1 Nutzer sagt Danke an Storax für diesen Beitrag:1 Nutzer sagt Danke an Storax für diesen Beitrag 28
• radagast
Registriert seit: 03.10.2018
Version(en): 2010 ProPlus / 2016 ProPlus
17.03.2019, 20:34
(Dieser Beitrag wurde zuletzt bearbeitet: 17.03.2019, 20:34 von Flotter Feger.)
Hallo,
um die Klicks aller CheckBoxen abzufangen, brauchst du eine Object-Klasse.
EDIT: genau das aus dem Link von Storax meine ich.
Registriert seit: 15.04.2014
Version(en): 2007, 2010, 2019
Heje Excelfreunde, Storax und Flotter Feger,
nach einigem Hin und Her...
KlasseModul
Code:
Option Explicit
Public WithEvents CheckBoxGroup As Msforms.CheckBox
Private Sub CheckBoxGroup_Click()
If CheckBoxGroup.Value = True Then
CheckBoxGroup.Caption = "Ausschluß"
CheckBoxGroup.BackColor = &H80000016
Else
CheckBoxGroup.Caption = ""
CheckBoxGroup.BackColor = &H80000004
End If
End Sub
NormalesModul
Code:
Dim CheckBoxCount As Integer
Dim ctl As control
On Error GoTo Fehler
' Create the checkBox objects
CheckBoxCount = 0
For Each ctl In UserForm5.Controls
If TypeName(ctl) = "CheckBox" Then
If ctl.Value <> 1 Then 'Skip the OKButton
CheckBoxCount = CheckBoxCount + 1
ReDim Preserve CheckBoxs(1 To CheckBoxCount)
Set CheckBoxs(CheckBoxCount).CheckBoxGroup = ctl
End If
End If
Next ctl
UserForm5.Show vbModal
Code:
Option Explicit
Option Private Module
Dim CheckBoxs() As New clsCheckBox
so funktioniert es...
Vielen Dank
--Janosch
Excel 2019 (64bit) Win 10 Pro (64bit)
Registriert seit: 29.09.2015
Version(en): 2030,5
Code:
Public WithEvents M_Check As Msforms.CheckBox
Private Sub M_Check_Click()
M_Check.Caption = iif(M_Check.value,"Ausschluß",""
M_Check.BackColor = &H80000016 -14*M_Check.value
End Sub
Im Userform Modul:
Code:
Dim sn() as new clsCheckbox
Private Sub Userform_Initialize
redim sn(controls.count)
For Each it In Controls
If TypeName(it) = "CheckBox" Then set sn(it.tabindex)=it
Next
Edn Sub
Folgende(r) 1 Nutzer sagt Danke an snb für diesen Beitrag:1 Nutzer sagt Danke an snb für diesen Beitrag 28
• radagast
Registriert seit: 15.04.2014
Version(en): 2007, 2010, 2019
Heje Excelfreunde, snb,
ich wiederhole mich gerne, DANKE...aber auch nochmals an alle Anderen...
Vielen Dank
--Janosch
Excel 2019 (64bit) Win 10 Pro (64bit)
Registriert seit: 15.04.2014
Version(en): 2007, 2010, 2019
Heje Excelfreunde, Storax, Flotter Feger und snb
habe mich im KlassModul zu diesem Lösungsansatz durchgerungen...
Code:
Option Explicit
Public WithEvents CheckBoxGroup As Msforms.CheckBox
Private Sub CheckBoxGroup_Click()
CheckBoxGroup.Caption = IIf(CheckBoxGroup.Value, "Ausschluß", "")
CheckBoxGroup.BackColor = IIf(CheckBoxGroup.Value, &H80000016, &H80000004)
End Sub
Vielen Dank
--Janosch
Excel 2019 (64bit) Win 10 Pro (64bit)
Registriert seit: 29.09.2015
Version(en): 2030,5
18.03.2019, 10:21
(Dieser Beitrag wurde zuletzt bearbeitet: 18.03.2019, 10:21 von snb.)
Oder ?
Code:
Private Sub CheckBoxGroup_Click()
With CheckBoxGroup
.Caption = IIf(.Value, "Ausschluß", "")
.BackColor = IIf(.Value, &H80000016, &H80000004)
end with
End Sub
Weiter lesen:
https://www.snb-vba.eu/VBA_Userform_invo...le_en.html
Registriert seit: 25.04.2016
Version(en): 2013
@Radagast: Hier zwar nicht relevant, aber was unser Freund immer gerne verschweigt, sind Nebenwirkungen
Ausschnitt aus der
DokuZitat:IIf wertet immer sowohl truepart als auch falsepart aus, auch wenn nur einer dieser Ausdrücke zurückgegeben wird.
Sie sollten deshalb auf unerwünschte Nebeneffekte achten. Wenn die Auswertung von falsepart beispielsweise zu einer
Division durch Null führt, tritt ein Fehler auf, auch wenn expr true ist.
Folgende(r) 1 Nutzer sagt Danke an Storax für diesen Beitrag:1 Nutzer sagt Danke an Storax für diesen Beitrag 28
• maninweb
Registriert seit: 15.04.2014
Version(en): 2007, 2010, 2019
heje Excelfreunde, snb, Storax,
snb: - habe deinen Vorschlage selber im nachhinein nach meinem Eintrag umgesetzt, auch der "link" top zu studieren...
Storax: - Danke für den Hinweis....
Vielen Dank
--Janosch
Excel 2019 (64bit) Win 10 Pro (64bit)