Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: InputBox Leer-String --> Integer

InputBox Leer-String --> Integer
David
Hallo zusammen,
manchmal bringt mich VBA wirklich um den letzten Nerv.
Mein Problem kann doch nicht so schwierig sein, allerdings krieg ich's auch nach langem Probieren nicht gebacken.
Ich möchte eine Benutzereingabe per Inputbox für eine Integer-Zahl. Wenn man jetzt aber die Box mit ohne Inhalt bestätigt, bringt der Leerstring einen "Typen-unverträglich-Fehler". Ich war der Meinung, mit CInt klappt die Umwandlung, aber Fehlanzeige.
Mein aktueller Stand:
Dim Zeile As Integer
Zeile = CInt(InputBox("Zeile?"))
Leider falsch - wie geht's richtig?
Danke und Gruß
David
Anzeige
AW: InputBox Leer-String --> Integer
05.10.2009 13:28:58
MichaV
Weiss nicht ob das "richtig" ist, aber so gehts auf jeden Fall:
Sub test()
Dim Zeile As Integer
Dim eingabe As String
eingabe = InputBox("Zeile?")
If StrPtr(eingabe) = 0 Then MsgBox "Abbrechen gedrückt": Exit Sub
If Len(eingabe) = 0 Then MsgBox "Leere Eingabe": Exit Sub
If Not IsNumeric(eingabe) Then MsgBox "Keine Zahl": Exit Sub
If Not CInt(eingabe) = eingabe Then MsgBox "Kein Integer": Exit Sub
Zeile = CInt(eingabe)
MsgBox "Eingabe:" & eingabe & vbCrLf & "Zahl:" & Zeile
End Sub
Gruß Micha
Anzeige
AW: InputBox Leer-String --> Integer
05.10.2009 13:41:50
David
Danke für deine Bemühungen, aber ich kann (und will) nicht glauben, dass es nur so "umständlich" geht.
Ist das nicht als 1- oder 2-Zeiler realisierbar?
Gruß
David
AW: InputBox Leer-String --> Integer
05.10.2009 13:51:57
MichaV
..von mir aus auch als Zweizeiler mit eingebauter Taschenrechnerfunktion:
eingabe = Application.InputBox("Zeile?", Type:=1)
If VarType(eingabe) = vbBoolean Then Exit Sub
Gruß- Micha
(ich lass aber mal offen, Du denkst ja an eine andere Lösung)
Anzeige
AW: InputBox Leer-String --> Integer
05.10.2009 14:23:47
David
Danke Micha,
schlußendlich habe ich's doch durch Probieren rausbekommen:
first_line = CInt(0 & InputBox("erste Zeile?"))
ist des Rätsels Lösung.
Gruß
David
AW: InputBox Leer-String --> Integer
05.10.2009 14:29:17
MichaV
..damit machst Du aber aus "nichts" eine Null, das ist zwei verschiedene Schuhe. Und wenn jemand keine Zahl eingibt fliegt der Code trotzdem raus.
Aber wenn Du das im restlichen Code berücksichtigst und das Rausfliegen bei nicht- numerischer Eingabe für Dich okay ist, dann ist das natürlich eine schöne Lösung.
Gruß- Micha
Anzeige
kleine Berichtigung
05.10.2009 14:39:42
MichaV
das kann ich so nicht stehenlassen.
das ist sind zwei verschiedene Paar Schuhe.
AW: InputBox Leer-String --> Integer
05.10.2009 14:39:49
David
Da der Code eigentlich nur für mich selbst ist, sollte das kein Problem sein. Ich wollte halt nur der "Bequemlichkeit" wegen erreichen, dass ich in bestimmten Fällen einfach die Inputbox "durchdrücke".
Mittlerweile habe ich erkannt, dass dafür ein Setzen des "Default"-Wertes wohl die geeignetere Methode ist. ;-)
Gruß
David
Anzeige
***noch offen***
05.10.2009 13:42:28
David
vielleicht mit Application.InputBox
05.10.2009 14:07:00
Tino
Hallo,
der User muss eine Zahl eingeben oder auf Abbrechen drücken.
Dim varZeile
varZeile = Application.InputBox(Prompt:="Zeile()", Type:=1)
If varZeile = False Then
MsgBox "Abbrechen wurde gedrückt"
Else
MsgBox varZeile
End If
Gruß Tino
;
Anzeige
Anzeige

Infobox / Tutorial

Eingaben mit InputBox in VBA korrekt umwandeln


Schritt-für-Schritt-Anleitung

Um eine Eingabe aus einer InputBox in VBA korrekt als Integer zu verarbeiten, kannst Du folgende Schritte befolgen:

  1. Deklariere eine Variable für die Eingabe als String und eine weitere als Integer.
  2. Nutze die InputBox, um die Benutzereingabe zu erhalten.
  3. Überprüfe, ob die Eingabe leer ist oder nicht.
  4. Wandle die Eingabe mit CInt in einen Integer um, wenn sie gültig ist.

Hier ist ein einfaches Beispiel:

Sub EingabeVerarbeiten()
    Dim eingabe As String
    Dim zeile As Integer

    eingabe = InputBox("Bitte eine Zeile eingeben:")

    If Len(eingabe) = 0 Then
        MsgBox "Leere Eingabe."
        Exit Sub
    End If

    If Not IsNumeric(eingabe) Then
        MsgBox "Bitte eine Zahl eingeben."
        Exit Sub
    End If

    zeile = CInt(eingabe)
    MsgBox "Eingabe: " & eingabe & vbCrLf & "Zahl: " & zeile
End Sub

Häufige Fehler und Lösungen

Ein häufiges Problem bei der Verwendung einer InputBox in VBA ist der Typenunverträglichkeitsfehler, der auftritt, wenn ein leerer String in einen Integer umgewandelt wird. Hier sind einige Tipps zur Fehlerbehebung:

  • Leerer String: Stelle sicher, dass die Eingabe nicht leer ist. Nutze If Len(eingabe) = 0 Then um dies zu überprüfen.
  • Ungültige Zahl: Verwende IsNumeric, um zu prüfen, ob die Eingabe eine Zahl ist.
  • CInt Fehler: Wenn CInt(eingabe) nicht funktioniert, kannst Du Val(eingabe) verwenden, um die Umwandlung robuster zu gestalten.

Alternative Methoden

Wenn Du eine einfachere Methode zur Eingabe eines Integers suchst, kannst Du die Application.InputBox mit dem Typ 1 verwenden. Dies zwingt den Benutzer, eine Zahl einzugeben:

Dim zeile As Variant
zeile = Application.InputBox("Bitte eine Zeile eingeben:", Type:=1)

If zeile = False Then
    MsgBox "Abbrechen gedrückt."
Else
    MsgBox "Eingabe: " & zeile
End If

Diese Methode bietet eine integrierte Taschenrechnerfunktion, die sicherstellt, dass nur numerische Werte akzeptiert werden.


Praktische Beispiele

Hier sind einige praktische Beispiele, wie Du die Eingabe mithilfe der InputBox verarbeiten kannst:

  1. Eingabe mit Standardwert:
Dim zeile As Integer
zeile = CInt(Application.InputBox("Bitte eine Zeile eingeben:", Default:=1, Type:=1))
MsgBox "Eingabe: " & zeile
  1. Eingabe mit Validierungschecks:
Sub EingabeMitValidierung()
    Dim eingabe As String
    Dim zeile As Integer

    eingabe = InputBox("Bitte eine Zeile eingeben:")

    If Len(eingabe) = 0 Then
        MsgBox "Leere Eingabe."
    ElseIf Not IsNumeric(eingabe) Then
        MsgBox "Bitte eine gültige Zahl eingeben."
    Else
        zeile = CInt(eingabe)
        MsgBox "Eingabe erfolgreich: " & zeile
    End If
End Sub

Tipps für Profis

  • Nutze die VarType-Funktion, um den Typ der Eingabe zu überprüfen, bevor Du die Umwandlung vornimmst.
  • Setze Standardwerte in Deinen InputBoxen, um die Benutzerfreundlichkeit zu erhöhen.
  • Berücksichtige die Verwendung von Val anstelle von CInt, um Fehler bei der Konvertierung zu vermeiden, insbesondere bei leeren oder nicht-numerischen Eingaben.

FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass der Benutzer eine Zahl eingibt?
Nutze die Application.InputBox mit dem Typ 1, um sicherzustellen, dass nur numerische Eingaben akzeptiert werden.

2. Was passiert, wenn der Benutzer auf "Abbrechen" klickt?
Wenn Du die Application.InputBox verwendest, gibt sie False zurück, wenn "Abbrechen" gedrückt wird. Bei einer normalen InputBox musst Du die Eingabe auf vbNullString überprüfen.

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