Straße und Hausnummer trennen mit VBA
Sie möchten in Adress-Datensätzen Straße und Hausnummer voneinander trennen und in zwei Felder aufteilen. Mit Access und VBA – kein Problem.
Die Funktion gibt die Position zurück, an der ein Straßenname von der Hausnummer getrennt werden kann. Der Srting wird von rechts Zeichenweise ausgewertet. Beim ersten Auftreten eines numerischen Wertes wird die Hausnummer erkannt. Dadurch werden alphanumerische Zeichen, die nach der Hausnummer stehen, zum Beispiel bei 7a oder 11 Nebeneingang, auch dem Feld der Hausnummer zugeordnet. Innerhalb der Hausnummer sind noch Leerzeichen und die Zeichen „-“ und „/“ erlaubt. Die Stelle, wo die Funktion auf ein weiteres nicht-numerisches Zeichen trifft, wird als letztes Zeichen der Straße definiert.
Function split_Strasse_Hausnummer(Adresse As String) As Integer
Dim isNummer As Boolean
Dim ret
isNummer = False
split_Strasse_Hausnummer = 0
For i = Len(Adresse) To 1 Step -1
ret = Mid(Adresse, i, 1)
Select Case ret
Case 0 To 9
isNummer = True
Case " "
Case "-"
Case "/"
Case Else
If isNummer = True Then
split_Strasse_Hausnummer = i
Exit For
End If
End Select
Next
End FunctionAufruf: ret = split_Strasse_Hausnummer(„Ringstraße 18-20“)
Ergebnis: 10 , also nach dem „e“
Und dann daraus noch die Werte ermitteln:
Function Strasse(Adresse)
Strasse = Left(Adresse, split_Strasse_HausNr(Adresse))
End Function
Function HausNr(Adresse)
HausNr = Trim(Mid(Adresse, split_Strasse_HausNr(Adresse) + 1))
End Function