Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1396to1400
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA - Zahl im string prüfen

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)

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA - Zahl im string prüfen
06.12.2014 11:29:30
Hajo_Zi
ich hätte einfach
Option Explicit
Sub test()
Dim Stwert As String
Dim LoWert As Long
Stwert = "GHt"
LoWert = Val(Stwert)
If LoWert = 0 Then
MsgBox "keine Zahl"
End If
End Sub

benutzt.

AW: VBA - Zahl im string prüfen
06.12.2014 11:38:10
Matze Matthias
Hallo Hajo,
ok soweit hab ich das glaube ich verstanden, aber bringt mich nicht zum Ziel,
denn ich erhalte mit deinem Code nur die Meldung "keine Zahl"
Liegt es daran das es ein "String" ist und die enthalte Zahl nur als "Text" vorliegt?
Muss ich nicht irgendwie mit "Isnumeric" arbeiten?
Steh echt auf dem Schlauch,.. ich mach mal ne Kaffeepause,...prost
Gruß Matze

Anzeige
AW: VBA - Zahl im string prüfen
06.12.2014 11:43:08
Hajo_Zi
das kann ich nicht nachvollziehen.
Option Explicit
Sub test()
Dim Stwert As String
Dim LoWert As Long
Stwert = "12GHt"
LoWert = Val(Stwert)
If LoWert = 0 Then
MsgBox "keine Zahl"
Else
MsgBox LoWert
End If
End Sub

die Zahl steht ja ganz links.
Gruß Hajo

OK, das war dann doch ein Gedankenfehler owT
06.12.2014 11:46:40
Matze Matthias

.Pattern = "^[0-9]{5} .+$"
06.12.2014 19:22:29
ransi
HAllo MAtze
So richtig hab ich nicht verstanden was du vorhast...
Ich rate mal:
Option Explicit

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
    If getzahl(sTxt) = True Then
        MsgBox "Mach was mit " & Left(sTxt, 5), , "Richtiger Eintrag"
        Else:
        MsgBox "Mach was anderes", , "Falscher Eintrag."
    End If
End Sub


Function getzahl(mystring As String) As Boolean
    Dim regex As Object
    Set regex = CreateObject("vbscript.regexp")
    With regex
        .Pattern = "^[0-9]{5} .+$"
        getzahl = .test(mystring)
    End With
End Function



Die Function prüft die Eingabe auf:
5Zahlen dann 1Leerzeichen dann beliebig viele andere Zeichen
und gibt wahr oder falsch zurück
ransi

Anzeige
Danke ransi, werds morgen testen, owT
06.12.2014 22:31:43
Matze Matthias

305 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige