change-ereignis bei dynamischen Controls / Teil 2
20.03.2008 15:50:00
Thomas
nachdem ich vor ein paar Tagen die bittere Erfahrung machen mußte, daß es bei meinem Problem ohne Klassenmodul nicht gelöst werden kann, habe ich mich damit beschäftigt und komme zu folgender Frage.
Sehe ich das richtig, daß zunächst meine Controls wie gehabt dynamisch erstellt und dann als Klassen-Objekte definiert werden müssen?
UserForm: Positionen
Option Explicit
Dim new_ctl As MSForms.Control
Dim ctl_Art(88) As Variant
Private Sub UserForm_Initialize()
For n = 0 To Anz_ctl
Set new_ctl = Positionen.Controls.Add("Forms.TextBox.1", ctl_Art( n), True)
new_ctl.Move Left:=Links_Box(n),Top:=Oben_Box(n),Width:=Breite_Box(n),Height:=Höhe_Box(n)
Call Klassen_Objekte_definieren
Next n
Sub Klassen_Objekte_definieren()
Dim ctl_txt As Object
Dim m As Integer
m = -1
For Each ctl_txt In Positionen.Controls
If TypeOf ctl_txt Is MSForms.TextBox Then
m = m + 1
ReDim Preserve Ftxt(m)
Set Ftxt(m) = New cls_txt
Ftxt(m).Create ctl_txt
End If
Next ctl_txt
End Sub
Meine Eingaben im Klassenmodul sind nun folgende:
Klassenmodul: cls_txt
Option Explicit
Dim WithEvents txt As MSForms.TextBox
Public Function Create(TextBox As MSForms.TextBox) As Boolean
Set txt = TextBox
If Not txt Is Nothing Then
Create = True
End If
End Function
Private Sub txt_Change()
On Error Resume Next
' MsgBox txt.Name
End Sub
Obwohl das ganze funktioniert, meine Frage an die Fachleute, ob ich so weiter wursteln kann, oder ob ihr irgendwelche Bedenken dabei habt.
Viele Grüße
Thomas