Eingaben in VBA InputBox nur als Zahlen akzeptieren
Schritt-für-Schritt-Anleitung
Um sicherzustellen, dass der Benutzer nur Zahlen in eine VBA InputBox
eingibt, kannst du folgende Schritte befolgen:
-
InputBox für das Alter erstellen:
Dim Alter As Integer
Alter = InputBox("Geben Sie Ihr Alter ein:", "Berechnung der Jahre bis zur Rente")
-
Überprüfung auf numerische Eingabe:
If Not IsNumeric(Alter) Then
MsgBox "Nur Eingabe von Zahlen erlaubt."
Exit Sub
End If
-
Wiederhole den Prozess für das Rentenalter:
Dim Rente As Integer
Rente = InputBox("Mit wieviel Jahren ist ihr Rentenalter erreicht?", "Mit wieviel Jahren...")
If Not IsNumeric(Rente) Then
MsgBox "Nur Eingabe von Zahlen erlaubt."
Exit Sub
End If
-
Berechnung der verbleibenden Jahre bis zur Rente:
Dim Restjahre As Integer
Restjahre = Rente - Alter
MsgBox "Sie müssen noch " & Restjahre & " Jahre bis zur Rente arbeiten."
Häufige Fehler und Lösungen
Alternative Methoden
Eine Alternative zur Überprüfung der Eingaben ist die Verwendung einer Schleife, um sicherzustellen, dass die Eingabe gültig ist, bevor du mit den Berechnungen fortfährst. Hier ein Beispiel:
Dim Eingabe As String
Do
Eingabe = InputBox("Geben Sie Ihr Alter ein:")
Loop Until IsNumeric(Eingabe) And Eingabe <> ""
Alter = CInt(Eingabe)
Diese Methode kann die Benutzererfahrung verbessern, indem sie so lange nach einer gültigen Eingabe fragt, bis der Benutzer eine Zahl eingibt.
Praktische Beispiele
Hier ist ein vollständiges Beispiel, das die oben genannten Punkte zusammenführt:
Sub BerechnungBisZurRente()
Dim Alter As Long
Dim Rente As Long
Dim Restjahre As Long
Dim Eingabe As String
Do
Eingabe = InputBox("Geben Sie Ihr Alter ein:")
Loop Until IsNumeric(Eingabe) And Eingabe <> ""
Alter = CLng(Eingabe)
Do
Eingabe = InputBox("Mit wieviel Jahren ist ihr Rentenalter erreicht?")
Loop Until IsNumeric(Eingabe) And Eingabe <> ""
Rente = CLng(Eingabe)
Restjahre = Rente - Alter
MsgBox "Sie müssen noch " & Restjahre & " Jahre bis zur Rente arbeiten."
End Sub
Tipps für Profis
- Verwende
Option Explicit
, um sicherzustellen, dass alle Variablen deklariert sind.
- Denke daran, die Datentypen entsprechend der erwarteten Eingabe zu wählen, z.B.
Long
statt Integer
, um Überläufe zu vermeiden.
- Integriere Fehlerbehandlungsroutinen, um unerwartete Eingaben elegant zu handhaben.
FAQ: Häufige Fragen
1. Wie kann ich sicherstellen, dass die Eingabe eine ganze Zahl ist?
Um sicherzustellen, dass die Eingabe eine ganze Zahl ist, kannst du die IsNumeric
-Funktion verwenden und zusätzlich prüfen, ob die Zahl ganzzahlig ist.
2. Was passiert, wenn der Benutzer die Eingabe abbricht?
Wenn der Benutzer die Eingabe abbricht, gibt die InputBox
eine leere Zeichenfolge zurück. Du kannst dies überprüfen und den Prozess entsprechend anpassen, z.B. durch das Beenden des Makros oder eine Warnmeldung.