Live-Forum - Die aktuellen Beiträge
Datum
Titel
18.04.2024 18:04:29
18.04.2024 16:33:24
Anzeige
Archiv - Navigation
1388to1392
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Klasse mit Eigenschaften und Untereigenschaften

Klasse mit Eigenschaften und Untereigenschaften
12.11.2014 16:15:48
Erik
Liebe Gemeinde,
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

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Klasse mit Eigenschaften und Untereigenschaften
15.11.2014 10:57:21
Tino
Hallo,
kann man dies evtl. auch über eine Enum-Anweisung und einer Funktion machen?
Enum Regular_Exp
lngLength
strOnChange
strOnExit
strExclude
End Enum
Function Regular_Expression(Reg_Exp As Regular_Exp)
Select Case Reg_Exp
Case Regular_Exp.lngLength: Regular_Expression = 5
Case Regular_Exp.strOnChange: Regular_Expression = "^[0-9]{1,}$"
Case Regular_Exp.strOnExit: Regular_Expression = "^\d{5}$"
Case Regular_Exp.strExclude: Regular_Expression = "[^0-9]"
End Select
End Function
Sub Beispiel()
Debug.Print Regular_Expression(lngLength)
Debug.Print Regular_Expression(strOnExit)
End Sub
Gruß Tino

Anzeige
AW: Klasse mit Eigenschaften und Untereigenschaften
17.11.2014 10:15:31
Erik
Hallo Tino,
danke dir für den Vorschlag! Und das beste: Es ist kompakter und einfacher und funktioniert und... ach, ich danke dir einfach extremst! :)
Gruß
Erik

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige