Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Inputbox mit mehreren Bedingungen

Forumthread: Inputbox mit mehreren Bedingungen

Inputbox mit mehreren Bedingungen
Klaus
Guten Abend.
ich gebe über eine Inputbox einen Wert an C2

Sub EingabeÜberInputbox()
Dim wert01 As Variant
Dim MaxW As Variant
MaxW = Range("c1").Value
wert01 = InputBox("", "Bitte geben Sie eine Nummer ein")
If wert01 = "" Then Exit Sub
Range("c2").Value = (wert01 - 1)
End Sub

Ich möchte jetzt noch zusätzliche Bedingungen einbauen:
Bei wert01 MaxW soll auch "Exit Sub" folgen und
bei wert01 = "a" soll MsgBox folgen
"if wert01 = "" Or wert01 MaxW Then Exit Sub"
gibt die Meldung "Typen unverträglich". Kann mir jemand helfen?
Danke im voraus
Klaus
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Inputbox mit mehreren Bedingungen
Uwe
Hallo, Klaus!
Mit der Übergabe aus der Inputbox, wird der Typ Variant mit einem bestimmten Datentyp belegt, so dass entwerder nur die Behandlung als String oder nur als Numeric möglich ist.
Daher ist die vorgesehene, erweiterte IF-abfrage aufzuteilen:
z.B.
if IsNumeric(wert01) then
if wert01 < 1 Or wert01 > MaxW then
exit sub
end if
else
if wert01 = "" then
exit sub
else
if wert01="a" then
MesBox ....
end if
end if
end if

Gruß!
Anzeige
AW: Inputbox mit mehreren Bedingungen
Klaus
Hallo Uwe,
Danke für die Antwort!
Habe alles so eingegeben wie Du vorschlägst, aber wenn ich z.B. den Wert 20
eingebe wird die letzte Anweisung
Range("c2").Value = (wert01 - 1)
nicht ausgeführt, obwohl keine der vorderen Bedingungen zutrifft (MaxW = 1800).
Woran kann das liegen?
Klaus
Anzeige
AW: Inputbox mit mehreren Bedingungen
Uwe
Sorry, war mein Fehler!
Bitte versuche,

If wert01 = "a" Then
MsgBox ("Nachricht")
Else
If Val(wert01) < Or Val(wert01) > MaxW Then Exit Sub
Range("c2").Value = (wert01 - 1)
End If

wenn Dir nicht bereits die Anwort von PeterW geholfen hat. Die Begründng, die ich vorher gab, ist jedoch auch nicht korrekt, da die Inputbox in jedem Fall einen String liefert.
Gruß!
Anzeige
Super. Das war's. Danke!
28.03.2004 00:17:51
Klaus
Danke! Und einen schönen Abend noch.
Klaus
AW: Inputbox mit mehreren Bedingungen
PeterW
Hallo Klaus,
warum baust du nicht einen Errorhandler ein, der sowohl den Leerstring als auch Texteingaben verhindert? Wenn du dann noch die Variablen gezielt dimensionierst dürftest du die Probleme los ein:

Sub EingabeÜberInputbox()
Dim wert01 As Integer
Dim MaxW As Integer
MaxW = Range("c1").Value
On Error GoTo ErrHandler
wert01 = InputBox("Bitte geben Sie eine Nummer ein")
If wert01 < 1 Or wert01 > MaxW Then Exit Sub
Range("c2") = wert01 - 1
Exit Sub
ErrHandler:
End Sub

Gruß
Peter
Anzeige
AW: Inputbox mit mehreren Bedingungen
28.03.2004 00:21:34
Klaus
Hallo Peter,
auch Dir ein Dankeschön für die Antwort.
Mit ErrHandler ist eine interessante Variante.
Einen schönen Abend noch
Klaus
;
Anzeige
Anzeige

Infobox / Tutorial

Inputbox mit mehreren Bedingungen in VBA


Schritt-für-Schritt-Anleitung

  1. Erstellen eines neuen Moduls:

    • Öffne Excel und drücke ALT + F11, um den VBA-Editor zu starten.
    • Klicke mit der rechten Maustaste auf "VBAProject (DeineDatei.xlsx)" und wähle "Einfügen" > "Modul".
  2. Eingabewerte über Inputbox abfragen:

    • Verwende die InputBox, um den Benutzer um eine Eingabe zu bitten. Hier ein einfaches Beispiel:
    Sub EingabeÜberInputbox()
       Dim wert01 As Variant
       Dim MaxW As Variant
       MaxW = Range("C1").Value
       wert01 = InputBox("Bitte geben Sie eine Nummer ein")
       If wert01 = "" Then Exit Sub
       Range("C2").Value = (wert01 - 1)
    End Sub
  3. Bedingungen hinzufügen:

    • Baue zusätzliche Bedingungen ein, um sicherzustellen, dass die Eingabe gültig ist. Zum Beispiel:
    If IsNumeric(wert01) Then
       If wert01 < 1 Or wert01 > MaxW Then Exit Sub
    Else
       If wert01 = "a" Then
           MsgBox "Ungültige Eingabe!"
       End If
    End If
  4. Fehlerbehandlung einbauen:

    • Erweitere den Code mit einer Fehlerbehandlung, um unerwartete Eingaben besser zu handhaben:
    Sub EingabeÜberInputbox()
       Dim wert01 As Integer
       Dim MaxW As Integer
       MaxW = Range("C1").Value
       On Error GoTo ErrHandler
       wert01 = InputBox("Bitte geben Sie eine Nummer ein")
       If wert01 < 1 Or wert01 > MaxW Then Exit Sub
       Range("C2") = wert01 - 1
       Exit Sub
    ErrHandler:
       MsgBox "Bitte geben Sie eine gültige Zahl ein."
    End Sub

Häufige Fehler und Lösungen

  • "Typen unverträglich" Fehler: Wenn Du versuchst, einen nicht-numerischen Wert zu verarbeiten, erhältst Du möglicherweise einen "Typen unverträglich" Fehler. Stelle sicher, dass Du IsNumeric verwendest, um die Eingabe zu überprüfen.

  • Werte werden nicht in C2 geschrieben: Dies kann passieren, wenn die Bedingungen nicht korrekt definiert sind. Überprüfe die Logik Deiner If-Anweisungen.


Alternative Methoden

  • Verwendung von Application.InputBox: Diese Methode kann verwendet werden, um sicherzustellen, dass nur numerische Eingaben akzeptiert werden. Beispiel:

    Dim wert01 As Variant
    wert01 = Application.InputBox("Bitte geben Sie eine Zahl ein", Type:=1) ' Type:=1 bedeutet, dass nur numerische Eingaben zugelassen sind
  • Benutzerdefinierte Formulare: Anstatt eine InputBox zu verwenden, kannst Du ein benutzerdefiniertes Formular erstellen, das mehrere Eingabefelder bietet. Dies ist besonders nützlich, wenn Du komplexe Eingaben benötigst.


Praktische Beispiele

Hier sind zwei Beispiele, wie Du die InputBox mit mehreren Bedingungen in Deinem VBA-Projekt nutzen kannst:

  1. Eingabe von Punkten für ein Spiel:

    Sub PunkteEingabe()
       Dim punkte As Variant
       punkte = InputBox("Gib die Punkte ein:")
       If IsNumeric(punkte) And punkte >= 0 Then
           MsgBox "Du hast " & punkte & " Punkte erzielt!"
       Else
           MsgBox "Bitte gib eine gültige Zahl ein."
       End If
    End Sub
  2. Eingabe eines Alters:

    Sub AlterEingabe()
       Dim alter As Variant
       alter = InputBox("Gib Dein Alter ein:")
       If IsNumeric(alter) And alter >= 0 And alter <= 120 Then
           MsgBox "Du bist " & alter & " Jahre alt."
       Else
           MsgBox "Bitte gib ein gültiges Alter ein!"
       End If
    End Sub

Tipps für Profis

  • Variablen richtig dimensionieren: Achte darauf, die Variablen entsprechend ihrem Datentyp zu deklarieren, um die Performance zu verbessern und Fehler zu vermeiden.

  • Verwende Option Explicit: Setze am Anfang Deiner Module Option Explicit, um sicherzustellen, dass alle Variablen deklariert sind. Dies hilft, Tippfehler zu vermeiden.

  • Erweiterte Fehlerbehandlung: Implementiere eine umfassende Fehlerbehandlung, um unerwartete Eingaben und Situationen abzufangen. Dies macht Deinen Code robuster.


FAQ: Häufige Fragen

1. Kann ich mehrere Eingabefelder in einer Inputbox haben? Die standardmäßige InputBox unterstützt nur ein Eingabefeld. Du kannst jedoch ein benutzerdefiniertes UserForm erstellen, um mehrere Eingabefelder zu integrieren.

2. Wie kann ich die Eingabe validieren? Verwende IsNumeric oder TypeName, um sicherzustellen, dass die Eingabe dem erwarteten Datentyp entspricht, bevor Du weitere Berechnungen durchführst.

3. Was ist der Unterschied zwischen InputBox und Application.InputBox? Die Application.InputBox bietet zusätzliche Parameter, um den Typ der Eingabe zu definieren (z.B. nur numerische Eingaben), während die einfache InputBox nur Text zurückgibt.

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