Enumeratoren
Zur Navigation springen
Zur Suche springen
Enumeratoren
Enumeratoren werden als Long-Werte hinterlegt.
' Enumeratoren geben uns die Möglichkeit, Parameter sinnvoll zu benennen und vorzugeben.
' Der Name des Enums sollte auch Teil der Werte sein, damit deren Zugehörigkeit
' jederzeit ersichtlich ist.
Public Enum enmSearchScope
enmSearchScopeSelection = 4
enmSearchScopeWorksheet = 1
enmSearchScopeWorkbook = 2
enmSearchScopeAllOpenWorkbooks = 3
End Enum
Beispiel: Suchen und ersetzen über einen Bereich
Public Sub ReplaceInCells(ByVal strFind As String, ByVal strReplace As String, ByVal blnIgnoreCase As Boolean, ByVal lngScope As enmSearchScope)
Select Case lngScope
Case enmSearchScopeSelection
MsgBox "Markierung"
Case enmSearchScopeWorksheet
MsgBox "Tabelle"
Case enmSearchScopeWorkbook
MsgBox "Arbeitsmappe"
Case enmSearchScopeAllOpenWorkbooks
MsgBox "Allen offenen Arbeitsmappen"
End Select
' Hier würde das Ersetzen stattfinden
End Sub
Stapelbare Enumeratoren
' Stapelbare Enumeratoren können addiert werden, um mehrere Optionen gleichzeitig angeben zu können.
' Dazu müssen die Werte wie hier aus der 2er-Exponenten-Reihe stammen, damit jeder Einzelwert
' später extrahiert werden kann.
Public Enum enmMealComponents
enmMealComponentBeef = 1
enmMealComponentFish = 2
enmMealComponentPoultry = 4
enmMealComponentPork = 8
enmMealComponentGreens = 16
enmMealComponentSalad = 32
enmMealComponentSoup = 64
enmMealComponentFries = 128
enmMealComponentBread = 256
End Enum
Public Sub AssembleMeal(ByVal lngTicketNumber As Long, ByVal lngComponents As enmMealComponents)
Dim strMealComponents As String
Dim lngExponent As Long, lngTest As Long
For lngExponent = 8 To 0 Step -1 ' Rückwärts-Schleife durch die 2er-Exponenten
lngTest = 2 ^ lngExponent ' Testwert ist das Ergebnis der Exponentialrechnung
If lngTest <= lngComponents Then ' Wenn der Testwert Teil des übergebenen Wertes ist ...
Select Case lngTest
Case enmMealComponentBeef
strMealComponents = strMealComponents & "Rindfleisch "
Case enmMealComponentFish
strMealComponents = strMealComponents & "Fisch "
Case enmMealComponentPoultry
strMealComponents = strMealComponents & "Geflügel "
Case enmMealComponentPork
strMealComponents = strMealComponents & "Schweinefleisch "
Case enmMealComponentGreens
strMealComponents = strMealComponents & "Grünzeug "
Case enmMealComponentSalad
strMealComponents = strMealComponents & "Salat "
Case enmMealComponentSoup
strMealComponents = strMealComponents & "Suppe "
Case enmMealComponentFries
strMealComponents = strMealComponents & "Pommes "
Case enmMealComponentBread
strMealComponents = strMealComponents & "Brot "
End Select
lngComponents = lngComponents - lngTest ' Die gefundene Teiloption wird entfernt
If lngComponents = 0 Then Exit For
End If
Next lngExponent
' Hier würde nun die Speise aus den Komponenten zusammengestellt,
' welche die oben entgegengenommenen Bestandteile enthält ...
MsgBox strMealComponents, , "Speise #" & lngTicketNumber
End Sub
Der Aufruf erfolgt folgendermaßen:
Sub TestMealAssembly()
AssembleMeal 12345, enmMealComponentFish + enmMealComponentFries + enmMealComponentGreens
End Sub