ich bin Autodidakt und komme mit der Programmierung in VBA schon ganz passabel klar. Jetzt versuche ich gerade, mich in die Klassenprogrammierung einzuarbeiten, ist ein schwieriges Feld. Ich habe dafür ein Beispiel von HaJo zu Hilfe genommen und entsprechend angepasst. Leider verstehe ich nicht alles. Folgende Problematik:
Es gibt mehrere Formulare mit CheckBoxen und OptionButtons. Da eine Parameterübergabe an ein Klassenmodul nicht möglich ist, habe ich den Formularnamen in die Tag-Eigenschaft der Steuerelemente geschrieben. Damit wollte ich auf das Formular verweisen, klappt aber nicht wie gewollt.
Hier ein Beispiel:
Userform "FrmChkBox1" (mit Checkbox 1 bis 10):
Private ChkBoxes() As New clsChkBox
Private Sub UserForm_Initialize()
Dim Ctr As Control
Dim intA As Integer
For Each Ctr In Me.Controls
If TypeName(Ctr) = "CheckBox" Then
ReDim Preserve ChkBoxes(0 To intA)
Set ChkBoxes(intA).myChkBox = Ctr
intA = intA + 1
End If
Next Ctr
End Sub
Klassenmodul "clsChkBox":'diese Prozedur funktioniert, nicht aktivierte Checkboxen werden False
Public WithEvents myChkBox As MSForms.CheckBox
Private Sub myChkBox_Change()
Dim Ctr As Control
Dim objFrm As Object
Set objFrm = FrmChkBox1
If myChkBox = True Then
With myChkBox
For Each Ctr In objFrm.Controls
If TypeName(Ctr) = TypeName(myChkBox) And Ctr.Name myChkBox.Name Then
Ctr = False
End If
Next
End With
End If
Set objFrm = Nothing
End Sub
'bei dieser Prozedur bleiben nicht aktivierte Checkboxen TruePrivate Sub myChkBox_Change()
Dim Ctr As Control
Dim objFrm As Object
Dim strFrm As String
If myChkBox = True Then
With myChkBox
strFrm = .Tag ' myChkBox.Name Then
Ctr = False
End If
Next
End With
End If
Set objFrm = Nothing
End Sub
Sicherlich liegt der Fehler im Verweis auf das Objekt Userform, das Formular ist im Lokalfenster aber als Objekt sichtbar (bei Einzelschritt). Wer kann mir weiterhelfen und erklären, was ich falsch mache.Vielen Dank schon mal im Voraus.
Mfg Jürgen