Hilfe! Inputbox-Messagebox

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
Bild

Betrifft: Hilfe! Inputbox-Messagebox
von: Helmut
Geschrieben am: 26.11.2003 11:40:23

Hallo liebe User,

Nepomuk hat mir gestern mit einem Skriptteil (steht unten) sehr geholfen.
Das Skript läuft auch ganz gut, aber es fehlt etwas Entscheidendes für mich, das ich gestern vergessen habe zu schreiben.
Auch wenn NICHTS (leer) in die Inputbox eingegeben wird, soll die MsgBox aufgehen und mitteilen, dass eine Falscheingabe erfolgt ist!

Machen will ich folgendes:

Ich möchte über eine Inputbox einen Monat eingeben lassen; die Eingabe darf eine Zahl von 1 bis 12 sein.
Wenn das nicht zutrifft, ODER WENN KEINE EINGABE ERFOLGT, dann soll eine Messagebox aufgehen, die die falsche Eingabe mitteilt und fragt, ob die Eingabe fortgesetzt werden soll.
Ist die Antwort JA, dann wird wieder mit der Inputbox begonnen, wenn die Antwort NEIN ist, soll das Macro verlassen werden.
Ist die Eingabe eine Zahl zwischen 1 und 12, soll einfach im Script weitergegangen werden.


Mit dem derzeitigen Script von Nepomuk nimmt VBA die Leereingabe aber an (wie gesagt, habe gestern vergessen diese Bedingung anzuführen!). Wie muß der Script denn nun aussehen, dass auch bei LERREINGABE die MsgBox aufgeht.

Nebenbei:
Ab Eingabe einer 5-stelligen Zahl (bis 4-stellig OK) bekomme ich beim derzeitigen Skript nicht die Falschmeldung der MsgBox sondern eine Fehlermeldung von VBA: "Überlauf"!
Wie kann ich auch dieses Problem beheben, da ich solche Fehler vermeiden möchte!?

Skript von Nepomuk:

Option Explicit
Public


Sub test()
    Dim Monat As String
    Do
        Monat = InputBox("Bitte geben Sie das Monat ein (1-12): z.B. 1 für Jänner")
        If Trim(Monat) <> "" Then
            If IsNumeric(Monat) Then
                Monat = CStr(CInt(Monat))
                If CDbl(Monat) >= 1 And CDbl(Monat) <= 12 Then Exit Do
            End If
        Else
            Exit Sub
        End If
        If MsgBox("Falsche Eingabe! Eingabe wiederholen?", 52, "ACHTUNG!") = vbNo Then Exit Sub
    Loop
End Sub




Ich danke euch im Voraus!

Lg, Helmut
Bild


Betrifft: AW: Hilfe! Inputbox-Messagebox
von: WernerB.
Geschrieben am: 26.11.2003 12:20:26

Hallo Helmut,

wie gefällt Dir das:

Sub test()
Dim MonT As String
Dim MonI As Integer
Dim Check As Boolean
    Do
      Check = False
      MonT = InputBox("Bitte geben Sie das Monat ein (1-12): z.B. 1 für Jänner")
      If MonT = "" Then Check = True
      If Len(MonT) > 2 Then Check = True
      If Check = False Then
        If IsNumeric(MonT) Then
          MonI = CInt(MonT)
          If MonI < 1 Or MonI > 12 Then Check = True
        Else
          Check = True
        End If
        If Check = False Then Exit Do
      End If
      If MsgBox("Falsche Eingabe! Eingabe wiederholen?", 52, "ACHTUNG!") = vbNo Then Exit Sub
    Loop
End Sub

Viel Erfolg wünscht
WernerB.

P.S.: Das Forum lebt auch von den Rückmeldungen der Fragesteller an die Antworter (siehe Forums-FAQ).


Bild


Betrifft: AW: Hilfe! Inputbox-Messagebox
von: Helmut
Geschrieben am: 26.11.2003 16:24:22

Hallo Werner,

ich danke dir recht herzlich!!! Es funktioniert prächtig! Jede "dumme" Eingabe wird ignoriert, und man wird erneut abgefragt!! Das ist genau das, was ich mir vorgestellt habe!

Danke nochmals!!

LG
Helmut


Bild

Beiträge aus den Excel-Beispielen zum Thema " Textbox verschieben"