Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema Frame
BildScreenshot zu Frame Frame-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema TextBox
BildScreenshot zu TextBox TextBox-Seite mit Beispielarbeitsmappe aufrufen

Klasse mit Eigenschaften und Untereigenschaften

Betrifft: Klasse mit Eigenschaften und Untereigenschaften von: Erik Kaubitzsch
Geschrieben am: 12.11.2014 16:15:48

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

  

Betrifft: AW: Klasse mit Eigenschaften und Untereigenschaften von: Tino
Geschrieben am: 15.11.2014 10:57:21

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


  

Betrifft: AW: Klasse mit Eigenschaften und Untereigenschaften von: Erik Kaubitzsch
Geschrieben am: 17.11.2014 10:15:31

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


 

Beiträge aus den Excel-Beispielen zum Thema "Klasse mit Eigenschaften und Untereigenschaften"