Diese vba Code Funktion wandelt eine Nummerierung wie
1.a oder 1.1 oder 1-a in eine Zahl mit Kommastellen um
Aufgabe:
Wenn man eine Tabelle mit einer logischen Sortierung ordnen
will, dann kommt man schnell auf das Problem dass die Sortierung falsch ist.
Zum Beispiel wird die Sortierung falsch sortiert:
1
20
21
1.1
1.a
Deshalb verwendet man interne oft eine Double-Zahl
welche die Sortierungswert der Text-Nummerierung bewertet.
In diesem Fall wird aus 1.a der Sortierwert 1.1
Aufruf wie hier
'--< SortVal >--
Dim dblSort As Double
dblSort = Conver_Text_to_SortNr_as_Double(sInput)
Me![sortNr] = dblSort
'--</ SortVal >--
|
Vba Funktion zum Sortieren von Text-Nummerierungen zu
Zahlen
Public Function Conver_Text_to_SortNr_as_Double(ByVal text As String) As Double
'--------<
Conver_Text_to_SortNr_as_Double() >--------
Dim sSortNr As String
sSortNr = ""
Dim sValueOfCharacter As String
sValueOfCharacter = ""
'--<
@Loop: all Characters >--
Dim iChar As Integer
For iChar = 1 To Len(text)
'< get
Loop-Character >
Dim sCharacter As String
sCharacter = Mid(text, iChar, 1)
'</ get
Loop-Character >
If InStr(".,;-*", sCharacter) > 0 Then
'< IsSeparater >
sValueOfCharacter = ","
'</ IsSeparater >
ElseIf sCharacter Like "[a-Z]" Then
'< Is Letter >
Dim intAscii As Integer
intAscii = Asc(sCharacter)
sValueOfCharacter = intAscii -
Asc("a") + 1
'</ Is Letter >
ElseIf sCharacter Like "[0-9]" Then
'< IsNumber >
sValueOfCharacter = sCharacter
'</ IsNumber >
Else
sValueOfCharacter = ""
End If
sSortNr = sSortNr & sValueOfCharacter
Next
'--</
@Loop: all Characters >--
'<
convert to double >
Dim dblSortNr As Double
dblSortNr = CDbl(sSortNr)
'</
convert to double >
'<
output >
Conver_Text_to_SortNr_as_Double = dblSortNr
'</
output >
'--------</
Conver_Text_to_SortNr_as_Double() >--------
End Function
|