AW: Userform und Textboxen
06.06.2024 09:29:05
Alwin Weisangler
Hallo,
ich war mal so dreist und habe in Beverlys Code die Klassenvariablen auf Private gesetzt und den Variablenzugriff via Property angelegt. Das hat den Vorteil, dass im Falle eines Fehlers, welcher wo auch immer passiert, die Klasse stabil(er) bleibt.
Public-Variablen verlieren im Falle eines Fehlers ihren Inhalt.
Ich weiß es ist eine eher philosophische Sache.
Klassenmodul:
Option Explicit
Private WithEvents m_clTextBox As MSForms.TextBox 'Variable zur Ansprache jeder TextBox die im Container enthalten ist
Property Set clTextBox(ByVal objTxt As MSForms.TextBox)
Set m_clTextBox = objTxt
End Property
Private Sub m_clTextBox_MouseDown(ByVal BclTextBox As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
m_clTextBox.Value = "x"
End Sub
ins Modul des Userforms:
Option Explicit
Private clsTextBoxen() As New clsTextBox 'Variable als Container für die TextBox-Klasse
Dim coElement As Control 'Variable um TextBoxen von anderen Steuerelemente zu unterscheiden
Private Sub UserForm_Initialize()
Dim inZaehler As Integer
' Schleife über alle Steuerelemente
For Each coElement In Me.Controls
' Steuerelemnt ist eine TextBox
If TypeName(coElement) = "TextBox" Then
' Schrifgtöße 12
coElement.FontSize = 12
' Container neu dimensionieren
ReDim Preserve clsTextBoxen(0 To inZaehler)
' TextBox in den Containrt aufnehmen
Set clsTextBoxen(inZaehler).clTextBox = coElement
inZaehler = inZaehler + 1
End If
Next coElement
End Sub
Die Dimensionierung der Public Variable muss natürlich aus dem allgemeinen Modul entfernt werden.
Public Variablen vermeide ich im Zusammenhang mit Klassen so gut es irgendwie geht. Es ist natürlich nur meine persönliche Sicht zur Sache.
https://www.herber.de/bbs/user/169877.xlsm
Gruß Uwe