Ich möchte in meinem Code prüfen, ob ein String eine Zahl ist.
Wie geht das?
Mit isnumber bin ich nicht weitergekommen.
Gruss, Peter
Sub test()
If IsNumeric(ActiveCell) Then
MsgBox "Zahl"
Else
MsgBox "keine Zahl"
End If
End Sub
Gruß Matthias
Um in Excel VBA zu prüfen, ob ein String eine Zahl ist, kannst du die Funktion IsNumeric verwenden. Hier ist eine einfache Schritt-für-Schritt-Anleitung:
Öffne den Visual Basic for Applications (VBA)-Editor in Excel (Alt + F11).
Füge ein neues Modul hinzu (Rechtsklick auf "Projekt" > "Einfügen" > "Modul").
Kopiere den folgenden Code in das Modul:
Sub test()
If IsNumeric(ActiveCell.Value) Then
MsgBox "Zahl"
Else
MsgBox "keine Zahl"
End If
End Sub
Schließe den VBA-Editor und gehe zurück zu Excel.
Wähle eine Zelle aus, die einen String enthalten könnte.
Führe das Makro aus (Alt + F8, wähle "test" und klicke auf "Ausführen").
Nun wirst du eine Meldung erhalten, die dir sagt, ob der Inhalt der aktiven Zelle eine Zahl ist oder nicht.
Fehler: "Typenübereinstimmung"
Dies kann auftreten, wenn du versuchst, IsNumeric auf einen nicht unterstützten Datentyp anzuwenden. Stelle sicher, dass der Wert in der Zelle ein String ist.
Fehler: "Nichts passiert"
Wenn das Makro nicht funktioniert, überprüfe, ob die Zelle tatsächlich einen Wert hat und ob das Makro korrekt ausgeführt wurde.
Neben der Verwendung von IsNumeric kannst du auch andere Methoden anwenden:
Verwendung von VBA.IsNumeric: Diese Methode funktioniert ähnlich wie die oben genannte. Sie kann in Access VBA verwendet werden, um zu prüfen, ob ein String in eine Zahl umgewandelt werden kann.
Regex: Wenn du spezifische Zahlenformate prüfen möchtest (z.B. nur ganze Zahlen), kannst du reguläre Ausdrücke verwenden.
Hier ist ein einfaches Beispiel:
Function IstZahl(ByVal str As String) As Boolean
Dim regEx As Object
Set regEx = CreateObject("VBScript.RegExp")
regEx.Pattern = "^\d+$" ' Nur ganze Zahlen
IstZahl = regEx.Test(str)
End Function
Hier sind einige Beispiele, wie du Strings in Zahlen umwandeln und überprüfen kannst:
Zahl aus String extrahieren:
Dim myString As String
Dim myNumber As Double
myString = "123.45"
myNumber = CDbl(myString) ' Wandelt den String in eine Zahl um
Prüfen, ob eine Zelle eine Zahl enthält:
If Not IsEmpty(Range("A1").Value) Then
If IsNumeric(Range("A1").Value) Then
MsgBox "Die Zelle A1 enthält eine Zahl."
Else
MsgBox "Die Zelle A1 enthält keine Zahl."
End If
End If
Application.WorksheetFunction.IsNumber, wenn du direkt auf Excel-Funktionen in VBA zugreifen möchtest.VBA string to double arbeiten willst, um sicherzustellen, dass die Umwandlungen korrekt durchgeführt werden.1. Wie kann ich prüfen, ob eine ganze Zahl in einer Zelle steht?
Verwende die Funktion IsNumeric in Kombination mit einer Überprüfung auf Ganzzahl:
If IsNumeric(Range("A1").Value) And Range("A1").Value = Int(Range("A1").Value) Then
MsgBox "Die Zelle enthält eine ganze Zahl."
End If
2. Was ist der Unterschied zwischen IsNumeric und Application.WorksheetFunction.IsNumber?
IsNumeric prüft, ob der Wert in einen Zahlentyp umgewandelt werden kann, während IsNumber spezifisch überprüft, ob der Wert bereits eine Zahl ist.