Live-Forum - Die aktuellen Beiträge
Datum
Titel
16.10.2025 17:40:39
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA - Zahl im string prüfen

Forumthread: 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)

Anzeige

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

Anzeige
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

;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

VBA: Zahl im String prüfen


Schritt-für-Schritt-Anleitung

Um zu prüfen, ob eine Zahl in einem String enthalten ist, kannst du die folgende VBA-Funktion verwenden. Diese Funktion sucht nach einer fünfstelligen Zahl gefolgt von einem Leerzeichen und beliebigen anderen Zeichen.

  1. Öffne den VBA-Editor in Excel (Alt + F11).
  2. Erstelle ein neues Modul (Rechtsklick auf "VBAProject" -> Einfügen -> Modul).
  3. Kopiere den folgenden Code in das Modul:
Option Explicit

Sub Vorlage_Neuer_Name()
    Dim sTxt As String, sTitle As String
    sTitle = "Neuer Kundenname"
    sTxt = InputBox(prompt:="5stellige Kundennummer und Namen eingeben" & vbCr & "z.B. 12345 NeuerName", Title:=sTitle)
    If sTxt = "" Then Exit Sub

    If getZahl(sTxt) Then
        MsgBox "Richtiger Eintrag: " & Left(sTxt, 5)
        ' Hier kannst du weitere Aktionen ausführen
    Else
        MsgBox "Falscher Eintrag."
    End If
End Sub

Function getZahl(ByVal myStr As String) As Boolean
    Dim regex As Object
    Set regex = CreateObject("vbscript.regexp")
    With regex
        .Pattern = "^[0-9]{5} .+$"
        getZahl = .Test(myStr)
    End With
End Function
  1. Führe die Subroutine Vorlage_Neuer_Name aus, um die Eingabeaufforderung zu testen.

Häufige Fehler und Lösungen

  • Fehler: "Keine Zahl" wird angezeigt.

    • Lösung: Stelle sicher, dass dein Input tatsächlich mit einer fünfstelligen Zahl beginnt. Die Funktion getZahl prüft genau darauf.
  • Fehler: Die Eingabe wird nicht erkannt.

    • Lösung: Überprüfe, ob das Muster (.Pattern) der Regex korrekt ist. Es sollte ^[0-9]{5} .+$ sein, um sicherzustellen, dass es mit fünf Ziffern beginnt, gefolgt von einem Leerzeichen und weiteren Zeichen.

Alternative Methoden

Eine alternative Methode besteht darin, die IsNumeric-Funktion zu verwenden. Diese Funktion prüft, ob ein String als Zahl interpretiert werden kann. Hier ein Beispiel:

Sub TestIsNumeric()
    Dim Stwert As String
    Stwert = "12345"
    If Not IsNumeric(Stwert) Then
        MsgBox "keine Zahl"
    Else
        MsgBox "Es ist eine Zahl: " & Stwert
    End If
End Sub

Praktische Beispiele

  1. Eingabe mit gültiger Zahl:

    • Eingabe: 12345 Mustername
    • Ausgabe: Richtiger Eintrag: 12345
  2. Eingabe mit ungültiger Zahl:

    • Eingabe: Mustername 12345
    • Ausgabe: Falscher Eintrag.

Tipps für Profis

  • Nutze die vba if string-Anweisung, um weitere Bedingungen zu prüfen, bevor du die Eingabe akzeptierst.
  • Überlege, ob du die Eingabe in eine Datenbank oder ein Arbeitsblatt speichern möchtest, nachdem du die Zahl geprüft hast.

FAQ: Häufige Fragen

1. Kann ich die Regex anpassen? Ja, du kannst das Muster in der getZahl-Funktion ändern, um andere Anforderungen zu erfüllen.

2. Was mache ich, wenn der Benutzer nichts eingibt? Die Zeile If sTxt = "" Then Exit Sub stellt sicher, dass der Code abbricht, wenn das Eingabefeld leer ist.

3. Wie kann ich mehrere Zahlen im String prüfen? Du kannst die .Execute-Methode des Regex-Objekts verwenden, um alle gefundenen Zahlen zu durchsuchen und deren Anzahl zu ermitteln.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige