Straße und Hausnummer trennen mit VBA

Straße und Hausnummer trennen mit VBA

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 Function

Aufruf: 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