hier mal ein Beispielmakro, welches die Lösung verdeutlicht:
Viel Spaß,
Andreas
vielleicht kommst Du mit der IsNumeric()-Funktion schon weiter.
Allerdings werden hier auch Zahlen mit Nachkommastellen erkannt (deswegen auch IsNumeric() und nicht IsInteger())
Gruß
Axel
Um zu überprüfen, ob der Wert einer textbox.value ein String oder ein Integer ist, kannst Du ein einfaches VBA-Makro verwenden. Hier ist ein Beispiel, wie Du dies umsetzen kannst:
Function CheckValue(value As Variant) As String
If IsNumeric(value) Then
If Int(value) = value Then
CheckValue = "Integer"
Else
CheckValue = "Numeric (mit Nachkommastellen)"
End If
ElseIf VarType(value) = vbString Then
CheckValue = "String"
Else
CheckValue = "Unbekannter Typ"
End If
End Function
Jetzt kannst Du die Funktion CheckValue aufrufen, um den Typ des Wertes in einer Textbox zu überprüfen:
Dim result As String
result = CheckValue(Me.TextBox1.Value)
MsgBox "Der Wert ist: " & result
Fehler: "Typ nicht definiert"
Variant ist eine gute Wahl, um unterschiedliche Typen zu akzeptieren.Fehler: Die Funktion gibt immer "Unbekannter Typ" zurück
textbox.value tatsächlich einen Wert enthält. Möglicherweise ist die TextBox leer oder der Wert wurde nicht korrekt übergeben.Eine andere Möglichkeit, um zu prüfen, ob textbox.value ein Integer oder ein String ist, ist die Verwendung der IsInteger-Funktion. Diese Funktion kann wie folgt genutzt werden:
If IsNumeric(Me.TextBox1.Value) Then
If IsInteger(Me.TextBox1.Value) Then
MsgBox "Der Wert ist ein Integer."
Else
MsgBox "Der Wert ist kein Integer, sondern eine Zahl mit Nachkommastellen."
End If
Else
MsgBox "Der Wert ist ein String."
End If
Hier sind einige praktische Beispiele, wie Du die oben genannten Methoden in Deiner Excel-Anwendung verwenden kannst:
Private Sub CommandButton1_Click()
Dim result As String
result = CheckValue(Me.TextBox1.Value)
MsgBox "Der Wert in der Textbox ist: " & result
End Sub
If IsNumeric(Me.TextBox1.Value) And IsInteger(Me.TextBox1.Value) Then
MsgBox "Der Wert ist ein Integer."
ElseIf VarType(Me.TextBox1.Value) = vbString Then
MsgBox "Der Wert ist ein String."
End If
Option Explicit-Anweisung am Anfang jedes Moduls. Sie zwingt Dich dazu, alle Variablen zu deklarieren, was Fehler reduziert.Debug.Print, um Werte während der Entwicklung im Direktfenster auszugeben. Das hilft Dir, den Fluss Deines Codes zu verstehen.Trim für textbox.value, um sicherzustellen, dass führende oder nachfolgende Leerzeichen nicht die Auswertung beeinflussen.1. Was ist der Unterschied zwischen IsNumeric und IsInteger in VBA?
IsNumeric prüft, ob ein Wert eine Zahl ist, einschließlich Zahlen mit Nachkommastellen. IsInteger prüft spezifisch, ob der Wert ein Integer ist.
2. Funktioniert dieser Code in allen Excel-Versionen?
Ja, die genannten Funktionen und der VBA-Code sind in allen gängigen Excel-Versionen verfügbar. Achte darauf, dass Du den VBA-Editor korrekt öffnest.