VBA - Zahl im string prüfen
06.12.2014 11:20:30
Matze Matthias
Hallo @All,
,...so nun brauch ich auch mal wieder Hilfe.
Vorhaben ist eine Eingabe in einer Inputbox "Zb.: 12345 Mustername" zu bewirken.
Es soll nun sicher werden das die 5stellige ZAHL auch eingegeben wurde.
Habe hier irgendwo die "function" gefunden komme aber leider nicht wirklich klar damit.
Option Explicit
Dim NewName As String
Dim Lrow As Long
Dim regEx As Object
Dim Matches As Object
Sub Vorlage_Neuer_Name()
Dim sTxt As String, sTitle As String
sTitle = "Neuer Kundenname" 'Application.UserName & " Anforderung:"
sTxt = InputBox(prompt:="5stellige Kundennummer und Namen eingeben" & vbCr & "z.B. 12345 _
NeuerName", Title:=sTitle)
If sTxt = "" Then Exit Sub
getZahl sTxt
MsgBox getZahl 'hier FEHLER warum??
' Sheets("00000 Vorlage_Gast").Select
' Sheets("00000 Vorlage_Gast").Copy Before:=Sheets(9)
' Sheets("00000 Vorlage_Gast (2)").Name = NewName
End Sub
' Liest Zahlen aus einem String heraus
' matchNr gibt an, welcher Treffer ausgelesen werden soll
Function getZahl(ByVal myStr As String, Optional ByVal matchNr As Integer = 1)
Dim x As Long
' <1 ergibt keinen Sinn, da wird der erste Treffer genommen
If matchNr < 1 Then matchNr = 1
Set regEx = CreateObject("Vbscript.Regexp")
With regEx
' Einfach nach Zahl suchen
.Pattern = "[0-9]+"
' Explicit nach Leerzeichen + Zahl suchen
' .Pattern = " [0-9]+"
.Global = True
Set Matches = .Execute(myStr)
End With
With Matches
' Wenn nichts gefunden oder nicht so viel gefunden wie gewünscht
' Leerstring wird zurückgegeben
If .Count = 0 Or .Count < matchNr Then
getZahl = ""
Else
' Das LTrim ist nur nötig, wenn nach Leerzeichen+Zahl gesucht wird
' beim anderen schadet es aber auch nicht
getZahl = LTrim(.Item(matchNr - 1))
End If
End With
End Function
Würde mich über eine kleine Musterdatei mit einem Beispiel erfreuen, danke.
Ziel wird sein das ein neues Arbeitsblatt über diese Inputbox generiert werden soll,
daher zum Schutz die Prüfung mit der Nummer (Soll intern als ID genutzt werden)