Brauche Hilfe wegen Isnumeric+Schleife

  • VB6

Es gibt 16 Antworten in diesem Thema. Der letzte Beitrag () ist von wincnc.

    Brauche Hilfe wegen Isnumeric+Schleife

    Hallo, ich hoffe, es kann mir jemand weiterhelfen mit meinem Problem…

    Ich versuch gerade ein kleines Programm mit Visual Basic zu schreiben, und dabei ergibt sich für mich folgendes Problem:
    - Ich möchte eine Inputbox machen, in die man ein Alter als Zahl eingibt
    - es soll allerdings eine Fehlermeldung per Messengerbox kommen, wenn man keine Zahl eingibt- also die Eingabe nicht numerisch ist
    - Für mich ergibt sich nun das große Problem, dass das Programm nach der Fehlermeldung nicht beendet werden soll, sondern wieder mit der Inputbox weitergeht, in der man das Alter eingeben soll
    - das heißt also, ich möchte eine Schleife konstruieren, die so lange eine Messengerbox anzeigt, bis die Eingabe für das Alter vorher numerisch war

    Ich hoffe, Ihr könnt mein Problem soweit nachvollziehen und habt ein paar Vorschläge bereit. Über ein paar Rückmeldungen würde ich mich sehr freuen. Vielen Dank schön mal…

    Gruß
    Matthias

    P.S Falls Ihr eine Antwort wisst, könnt Ihr auch ne Mail schreiben.
    Vielen Dank schon mal
    Hallo, veruch´s mal so:

    Quellcode

    1. Private Sub Command1_Click()
    2. Dim Alter As String
    3. Do While Not IsNumeric(Alter)
    4. Alter = InputBox("Bitte geben Sie Ihr Alter ein.")
    5. If Not IsNumeric(Alter) Then
    6. MsgBox "Bitte nur Zahlen eingeben."
    7. End If
    8. Loop
    9. End Sub
    Vielen Dank für die Tipps!!!!
    Es hat eigentlich mein Problem gelöst. Allerdings hat das jetzt ein neues Problem aufgezeigt :(
    Wenn man die inputbox hat , in der man das alter eingibt, wie besteht dann die möglichkeit, das programm ganz zu verlassen?

    Mein quellcode besteht zur zeit aus:

    Sub Dateneingabe()

    Dim alter As String

    Do While Not IsNumeric(alter)
    alter = InputBox("Bitte geben Sie Ihr Alter ein.")
    If Not IsNumeric(alter) Then
    MsgBox "Bitte nur Zahlen eingeben."
    End If
    Loop
    MsgBox ("Geben Sie die Körpergröße ein")
    End Sub


    Die Inptbox (bitte geben sie ihr Alter ein") muss man irgendwie beenden können, mit abbrechen oder so.
    aber wenn ich dann auf abbrechen klicke, kommt wieder die Nachricht, (Bitte nur Zahlen eingeben), und das Spiel geht von vorne los:)
    ich hoffe, ich konnte mein Problem einigermaßen verständlich machen... 8)

    Quellcode

    1. Sub Dateneingabe()
    2. Dim Alter As String
    3. Do While Not IsNumeric(Alter)
    4. Alter = InputBox("Bitte geben Sie Ihr Alter ein.")
    5. If StrPtr(Alter) = 0 Then Exit Sub
    6. If Not IsNumeric(Alter) Then
    7. MsgBox "Bitte nur Zahlen eingeben."
    8. End If
    9. Loop
    10. End Sub
    @Matze1Bremen

    StrPtr(String) gibt die aktuelle Position des Strings im Arbeitsspeicher zurück, wenn der String also noch nicht initialisiert wurde ist das Ergebnis "0" und die Prozedur wird sofort beendet (Exit Sub) und der Code geht nach dem "End Sub" weiter (falls dein Prof dich fragt).

    mfG,

    Malcolm

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Malcolm“ ()

    Hallo Matze,

    manchmal habe ich das Gefühl, der eine oder andere Teilnehmer des Forums macht sich keine Mühe, die Postings genau zu lesen....

    Wer mehr über diese undokumentierten VB-Funktionen wissen möchte:
    Undokumentierte Variablenzeiger

    Wenn du diesem Link folgst, werden dir schon einige Fragen beantwortet. Aber auch die helfen nur, wenn man einige Grundlagen der Adressierung und Speicherwerwaltung kennt und versteht.

    Gruß Markus
    Hi Marcus, vielen dank für den Link. Allerdings hab ich einige Probleme mit der Verständlichkeit der Definitionen...Ich bin schlicht und einfach zu blöde dafür, denke ich:)

    Allerdings hab ich das mit der StrPtr-Funktion noch nicht so ganz verstanden, was die genau bei mir bewirkt bzw., wieso die das??? macht

    Zurück-Funktion

    Und nochmal ne kleine Frage:
    Kann man bei einer Inputbox eine
    "zurück"-Funktion eingeben?
    Also sozusagen ein Button, bei dem man auf zurück geht und ich somit wieder auf meine erste Inputbox komme?
    Gruß
    Matze
    Bei der InputBox gibt es nur OK und Abbrechen. Entweder nimmst du den Abbrechen-Button für dein "zurück" (also wenn der String leer ist), oder du baust dir eine eigene InputBox...
    Gruß, Agent Smith 8-)

    activeFlags = (lazy OR weary)

    Lemgo-Verschwörung | Mathematics | VB-Paradise in blau
    ein kleines problem beim runden:

    meine deklinierung ist:

    Dim ergebnis as double
    round (ergebnis, [3])

    allerdings funktioniert das nicht...
    Kann mir bitte jemand helfen, der weiß wie man ein ergebnis auf drei nachkommazellen rundet?