![]() |
Betrifft: Ereignis von Laufzeit-Checkbox
von: Adi
Hallo liebes Forum,
mit folgendem Code
Private Sub UserForm_Initialize()
AnzMitarbeiter = UBound(MitarbeiterNameArray)
Me.Height = Me.Height + 15 * AnzMitarbeiter + 20 + 10
Me.AbbruchCommandButton.Top = Me.AbbruchCommandButton.Top + 15 * (AnzMitarbeiter) + 20 + 10
Me.OKCommandButton.Top = Me.OKCommandButton.Top + 15 * (AnzMitarbeiter) + 20 + 10
For CheckBoxZähler = 1 To AnzMitarbeiter
CheckBoxName = Bereinigt(MitarbeiterNameArray(CheckBoxZähler)) & "CheckBox"
Set CheckBox_i = Controls.Add("Forms.CheckBox.1", CheckBoxName)
CheckBox_i.Left = 6
CheckBox_i.Top = 15 * (CheckBoxZähler) '18
CheckBox_i.Width = 99
CheckBox_i.Height = 20
CheckBox_i.Caption = MitarbeiterNameArray(CheckBoxZähler)
CheckBox_i.BackStyle = fmBackStyleTransparent
Next CheckBoxZähler
'alleCheckBox
CheckBoxName = "alleCheckBox"
Set CheckBox_i = Controls.Add("Forms.CheckBox.1", CheckBoxName)
CheckBox_i.Left = 6
CheckBox_i.Top = 15 * (CheckBoxZähler) + 8
CheckBox_i.Width = 99
CheckBox_i.Height = 20
CheckBox_i.Caption = "alle Mitarbeiter"
CheckBox_i.BackStyle = fmBackStyleTransparent
End Sub
passe ich eine Userform zur Laufzeit an, so dass im Dialogfenster für jeder im Tabellenblatt gefundene Mitarbeiter (MitarbeiterNameArray) ein Kontrollkästchen und zusätzlich eine Kontrollkästchen "alle Mitarbeiter" exisitiert.
Nun will ich das Ereignis des Anhakens/ Haken-Entfernens dieses letzten Kontrollkästchens abfangen.
Ich dachte das mit
Private Sub alleCheckBox_Click()
End Sub
zu erreichen, obwohl das Kontrollkästchen erst während der Laufzeit erzeugt und benannt wird.
Aber nichts passiert.
Könnt Ihr mir helfen?
Danke im Voraus
Adi
![]() |
Betrifft: AW: Ereignis von Laufzeit-Checkbox
von: Herbert
Geschrieben am: 08.04.2008 22:45:47
Hi,
endlich mal ein Profi!
Du brauchst ein Klassenmodul, Beispiele in der Recherche.
mfg Laie Herbert
![]() |
Betrifft: AW: Ereignis von Laufzeit-Checkbox
von: Harald Kapp
Set OK_Button = Kurse_aktualisieren.Designer.Controls.Add("Forms.CommandButton.1")
With OK_Button
.Left = 124
.Top = 30 + 20 * (Anzahl_Aktien + 2)
.Width = 48
.Height = 18
.Caption = "OK"
.Cancel = False
.Default = True
.Name = "Command_OK"
End With
Set Abbruch_Button = Kurse_aktualisieren.Designer.Controls.Add("Forms.CommandButton.1")
With Abbruch_Button
.Left = 208
.Top = 30 + 20 * (Anzahl_Aktien + 2)
.Width = 48
.Height = 18
.Caption = "Abbruch"
.Cancel = True
.Default = False
.Name = "Command_Abbruch"
End With
Set Kopieren_CheckBox = Kurse_aktualisieren.Designer.Controls.Add("Forms.CheckBox.1")
With Kopieren_CheckBox
.Left = 240
.Top = 6
.Height = 15
.Caption = "Kopieren"
.Value = False
.Name = "Kopieren_CheckBox"
End With
' hier wird der dazu gehörige Code zur Laufzeit erzeugt:
' Definition des Code Modules für das Formular
With Kurse_aktualisieren.CodeModule
i = .CountOfLines
If i = 2 Then
.InsertLines i, "": i = i + 1
Else
i = 1
End If
' Definition der Prozedur für den OK Button
.InsertLines i, "Private Sub Command_OK_Click()": i = i + 1
.InsertLines i, "Datum_Pub = Datum_neu": i = i + 1
.InsertLines i, "Abbruch = False": i = i + 1
.InsertLines i, "LeereEingabe = False": i = i + 1
.InsertLines i, "Kopieren_Kurse_Kommentar = Kopieren_Kurse_Wert.Value": i = i + 1
For Index = 1 To Anzahl_Aktien
.InsertLines i, "If Feldwert_" + CStr(Index) + ".Value <> """" Then": i = i + 1 ' """" _
= "", da sonst das Ende des Strings erkannt würde
.InsertLines i, " Kurs_Pub(" + CStr(Index) + ") = Feldwert_" + CStr(Index) + ".Value" _
: i = i + 1
.InsertLines i, "Else": i = i + 1
.InsertLines i, " LeereEingabe = True": i = i + 1
.InsertLines i, "End If": i = i + 1
Next Index
.InsertLines i, "Unload Me": i = i + 1
.InsertLines i, "End Sub": i = i + 1
' Definition der Prozedur für den Abbruch Button
.InsertLines i, "Private Sub Command_Abbruch_Click()": i = i + 1
.InsertLines i, "Abbruch = True": i = i + 1
.InsertLines i, "Unload Me": i = i + 1
.InsertLines i, "End Sub": i = i + 1
' Definition der Prozedur für das Schließen Feld. Hier Schließen = Abbruch
.InsertLines i, "Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)" _
: i = i + 1
.InsertLines i, "If CloseMode = vbFormControlMenu Then Abbruch = True": i = i + 1
.InsertLines i, "End Sub": i = i + 1
' Definition der Prozedur für die Kopieren Checkbox
Kopieren_Kurs = False
.InsertLines i, "Private Sub Kopieren_CheckBox_Click()": i = i + 1
.InsertLines i, "If Kopieren_CheckBox.Value = False Then": i = i + 1
.InsertLines i, "Kopieren_Kurse_Label.Visible = False": i = i + 1
.InsertLines i, "Kopieren_Kurse_Wert.Visible = False": i = i + 1
For Index = 1 To Anzahl_Aktien
.InsertLines i, "Feldwert_" + CStr(Index) + ".Value = """"": i = i + 1
Next Index
.InsertLines i, "Else": i = i + 1
.InsertLines i, "Kopieren_Kurs = True": i = i + 1
.InsertLines i, "Kopieren_Kurse_Label.Visible = True": i = i + 1
.InsertLines i, "Kopieren_Kurse_Wert.Visible = True": i = i + 1
For Index = 1 To Anzahl_Aktien
.InsertLines i, "Feldwert_" + CStr(Index) + ".Value = Letzter_Kurs(" + CStr(Index) + ") _
": i = i + 1
Next Index
.InsertLines i, "End If": i = i + 1
.InsertLines i, "End Sub": i = i + 1
End With
Unelegant, aber läuft seit Jahren.
Gruß Harald
![]() |
Betrifft: AW: Ereignis von Laufzeit-Checkbox
von: Adi
Geschrieben am: 09.04.2008 08:52:01
Danke Harald, Danke Herbert.
ich muss zugeben, vor Klassenmodulen habe ich "Manschetten".
Meine Lösung:
Da die UserForm schon von Beginn an vorhanden ist und während der Laufzeit nur erweitert wird, habe ich nun auch die "problematische" alleCheckBox von Anfang an integriert (alle Mitarbeiter-CheckBoxen werden hingegen erst zur Laufzeit erzeugt).
So kann ich mittels alleCheckBox_Click wie gewohnt das Ereignis abfangen.
Nichtsdestotrotz ist die Lösung mittels Klassenmodul wohl die 'einzig wahre' Methode. Nur leider hab ich auf die Schnelle in der Recherche kein passendes Beispiele finden können. Mein Fehler!
![]() |