Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1784to1788
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Inputbox

Inputbox
13.10.2020 12:39:44
Edmund
Hallo Ihr
Und noch einmal würde ich das Forum gerne mit einer Frage bereichern.
Ich benötige in meinem Script eine Zahl.
Diese soll über eine Inputbox abgefragt werden.
Das Problem:
Wenn ich die Variable als Long deklariere, gibt es eine Fehlermeldung, wenn der User auf Abbrechen drückt, da Abbrechen einen String zurückliefert.
Wenn ich die Variable als String deklariere, kann ich mit ihr nichts anfangen, weil es ein Text ist.
Im Moment habe ich das so gelöst
Dim varMonat As Variant
Dim lngMonat As Long
varMonat = InputBox("Welcher Monat soll berechnet werden?" & vbCrLf & "Bitte als Zahl angeben")
lngMonat = varMonat

Das funktioniert zwar, aber ich spüre in meiner Seele, dass das sicher auch eleganter geht.
Hat da jemand einen Tipp?
LG
Edmund

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Inputbox
13.10.2020 12:48:53
Rudi
Hallo,
z.B.
Sub aaa()
Dim varMonat
varMonat = Application.InputBox("Monat?", , , , , , , 1)
Select Case varMonat
Case 1 To 12:    MsgBox "OK"
Case Else:     MsgBox "falsch"
End Select
End Sub

AW: Inputbox
13.10.2020 12:56:26
Daniel
Hi
beispielsweise, in dem du anstelle der allgemeinen VBA-Inputbox die Excel(applications-)spezifische Inputbox verwendest und da vorgibst, dass die Eingabe eine Zahl sein muss:
lngMonat = Application.InputBox("Monat", Type:=1)
ein Abbruch wird hier mit dem Wert 0 quittiert.
bei Eingabe eines Textes wird der Anwender aufgefordert, die Eingabe zu wiederholen.
wenn du Komfort für den Anwender willst, dann verwendest du trotzdem eine Text-Inputbox und gibst dem Anwender die Möglichkeit, den Monat nicht nur als Zahl, sondern auch als Kurz- ("Okt") oder Langtext ("Oktober") eingeben zu können.
Ist zwar dann etwas programmieraufwand und nicht mehr "elegant", aber Eleganz in der Programmierung interessiert den Anwender nicht.
Gruß Daniel
Anzeige
AW: Inputbox
13.10.2020 13:01:40
Edmund
Danke für Eure Antworten
Leider funktioniert das noch nicht wie gewünscht.
Jetzt gibt es eine Fehlermeldung, wenn nichts eingegeben und dann auf OK geklickt wird.
Leider muss ich jetzt in eine Besprechung, kann also erst in 2h wieder antworten.
Viele Grüße
Edmund
AW: Inputbox
13.10.2020 13:36:40
Daniel
Hi
eine Abfrage, ob ein sinnvoller Monatswert (von 1-12) eingegeben wurde, brauchst du sowieso.
Auch den Abbruch musst du ja irgendwie erkennen.
das kannst du "elegant" über die Inputbox nicht abfangen.
ein paar zusätzliche Zeilen Programmcode sind da auf jeden Fall erforderlich.
Gruß Daniel
Anzeige
AW: Inputbox
13.10.2020 13:44:53
Edmund
Danke für die Antwort
Das Abfragen des Monats ist klar. Das sieht bis jetzt bei mir so aus.
Dim varMonat As Variant
Dim lngMonat As Long
varMonat = Application.InputBox("Welcher Monat soll berechnet werden?" & vbCrLf & "Bitte als Zahl angeben")
lngMonat = varMonat
If varMonat = "" Then Exit Sub
If lngMonat >= 1 And lngMonat Else
MsgBox "Kein gültiger Monat"
Exit Sub
End If

Dann werde ich doch meine Lösung behalten müssen.
Schade, ich dachte das geht eleganter und eine Variable genügt.
Danke Euch für Deine Mühe
AW: Inputbox
13.10.2020 13:56:48
Daniel
es genügt dir eine Variable.
Variant kann mehrere Zustände annehmen.
du musst dann explizt umwandeln:
so bekommst du auch einen sauberen Programmlauf, wenn der Anwender einen Text eingibt.
varMonat = Inputbox(…)
varMonat = VAL(varMonat)
if varMonat  12 then
Msgbox "ungültiger Monat"
Exit Sub
end if
oder eben mit der Appication.Inputbox
lngMonat = application.Inputbox(…, Type:=1)
if lngMonat  12 then
Msgbox "ungültiger Monat"
Exit Sub
end if

die Variable bitte entsprechend dem Präfix als Variant oder Long deklarieren.
Gruß Daniel
Anzeige
AW: Inputbox
13.10.2020 14:25:36
Edmund
Hallo Daniel
varMonat = VAL(varMonat)
Das war es.
Den kannte ich noch nicht, und damit funktioniert es.
Vielen Dank

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige