Klasse mit Eigenschaften und Untereigenschaften
12.11.2014 16:15:48
Erik
ich bastel gerade an einer Art "Framework", das mir das Programmieren innerhalb von Excel mit VBA erleichtern soll.
Ich arbeite häufig mit regulären Ausdrücken und validiere gern die Benutzereingaben.
Damit ich mir nicht immer wieder die Prüfmuster aus dem Internet raussuchen muss, habe ich mir überlegt ein Objekt zu programmieren, das als Eigenschaften die Datenarten(bspw. Postleitzahl, Straße, Stadt, Passwort etc.) enthält. Jede dieser Datenarten soll wiederum Eigenschaften (Länge, Prüfmuster bei Eingabe, Prüfmuster und Ausschlussmuster) mit den jeweiligen Such- und Prüfmustern enthalten.
Zur Veranschaulichung:
Ihr kennt das Textbox-Objekt, dass folgende Eigenschaft hat:
With TextBox
.font.size = 12 'Beispielhaft
End With
Ich habe nun eine Hauptklasse (Name: clsValidation) erstellt und für jede Datenart eine entsprechende Eigenschaft angelegt:
Option Explicit
Public Zip As New clsZip
Public Street As New clsStreet
Public City As New clsCity
Public Password As New clsPassword
Public AlphaNumeric As New clsAlphaNumeric
Private Sub Class_Initialize()
End Sub
Private Sub Class_Terminate()
End Sub
Für jede Datenart habe ich wiederum eine eigene Klasse (exemplarisch "clsZip") geschrieben:
Option Explicit
Dim lngLength As Long
Dim strOnChange As String
Dim strOnExit As String
Dim strExclude As String
'STANDARDWERTE FESTLEGEN
Private Sub Class_Initialize()
lngLength = 5
strOnChange = "^[0-9]{1,}$"
strOnExit = "^\d{5}$"
strExclude = "[^0-9]"
End Sub
'EIGENSCHAFT LÄNGE ANLEGEN
Public Property Let Length(ByVal newLength As Long)
lngLength = newLength
End Property
Public Property Get Length() As Long
Length = lngLength
End Property
'EIGENSCHAFT ONCHANGE ANLEGEN
Public Property Let OnChange(ByVal newPattern As String)
strOnChange = newPattern
End Property
Public Property Get OnChange() As String
OnChange = strOnChange
End Property
'EIGENSCHAFT ONEXIT ANLEGEN
Public Property Let OnExit(ByVal newPattern As String)
strOnExit = newPattern
End Property
Public Property Get OnExit() As String
OnExit = strOnExit
End Property
'EIGENSCHAFT EXCLUDE ANLEGEN
Public Property Let Exclude(ByVal newPattern As String)
strExclude = newPattern
End Property
Public Property Get Exclude() As String
Exclude = strExclude
End Property
Private Sub Class_Terminate()
End Sub
Nun meine Frage: Geht das alles einfacher/kürzer/besser/performanter? Ich habe quasi gar kein Problem, möchte aber lernen.Ich habe mich für die Klassenprogrammierung entschieden, weil ich durch IntelliSense auf die ganzen Datenarten zugreifen kann, ohne mir merken zu müssen, wie die Datenart bezeichnet wird.
Ich grüße aus dem schönen Dresden und bedanke mich für jegliche Anregung!
Gruß
Erik