Diese könnte ungefähr so aussehen:
Public Function f_hausnummer(as_strasse As String) As String
Dim li_pos As Integer, li_laenge As Integer,
li_laenge_hausnr
Dim ls_hausnummer As String
'Zunächst mal überflüssige Leerzeichen abschneiden
as_strasse = Trim(as_strasse)
’ Länge des kompletten Strings bestimmen
li_laenge = Len(as_strasse)
’ Den String Zeichen für Zeichen durchlaufen bis das 1.
numerische Zeichen kommt
For li_pos = 1 To li_laenge
If isnumber(Mid(as_strasse, li_pos, 1)) Then
'Die Hausnummer wurde gefunden bzw. der Beginn der
Hausnummer
’ Länge der Hausnummer bestimmen
li_laenge_hausnr = (li_laenge - li_pos) + 1
ls_hausnummer = Right(as_strasse,
li_laenge_hausnr)
Quit
End If
Next
f_hausnumemr = ls_hausnummer
End Function
Aber Vorsicht, habe das ganze noch nicht getestet. Außerdem
müssen hier noch solche Fälle wie leere Straßennamen, Straßen
ganz ohne Hausnummer usw. abgefangen werden.
Grüße
Marion
Dieser Vorschlag ist wie Marion schon bemerkt etwas „buggy“.
Denn der Anwender wird ganz schön blöd gucken, wenn aus der „Neue Strasse“ die „NeueStrasse“ wird.
Prinzipiell kann es keine Funktion geben, die dies 100%ig erledigt. Denn woher soll der Computer wissen, was bei den folgenden Strassen die Hausnummer ist und was nicht:
- Hauptstrasse 9b
- An der B65 6
- Bundesstrasse 200
- Mühlstrasse 4a - 10
Daher schlage ich vor, eine Prozedur zu schreiben, die an der letzten Stelle anfängt zu suchen und das Zeichen löscht, wenn es eine Zahl ist. Das soll solange passieren, wie eine Zahl gefunden wird.
Danach würde ich eine neue Prozedur schreiben, die alle Datensätze ausgibt, in denen Zahlen stecken. Die mußt du dann von Hand überprüfen.