Hallo Zusammen,
ich lerne gerade vba und bin noch Anfänger.
Hab in Word ein UserForm mit zwei Zahlen-Eingabefeldern. Die Erste soll von Person 1 vorgeben werden und zwischen 0 und 100 liegen. Die Zweite soll von Person 2 geraten werden. Ein 3 Textfeld soll eine Information darüber liefern wie nah die geratene Zahl an der Vorgegeben liegt.
Bedingung für die Ergebnisausgabe in Feld 3 ist:
größer oder kleiner als die vorgegbene Zahl, unter 10 oder gleich 10 an der vorgegeben Zahl oder größer als 10 von der Ursprungszahl entfernt.
Ich darf aber nur mit If und Select case arbeiten
Folgenden Code habe ich erstellt:
Das letze Case If, mit den Sternchen im Kommentar, zeigt im Ergebnisfeld nicht an. Nach meinem Dafürhalten müsste aber funktionieren,
oder ich sehe den Wald vor lauter Bäumen nicht.
Kann mit jemand Helfen?
Mit vielem Dank vorab
Holger
ich lerne gerade vba und bin noch Anfänger.
Hab in Word ein UserForm mit zwei Zahlen-Eingabefeldern. Die Erste soll von Person 1 vorgeben werden und zwischen 0 und 100 liegen. Die Zweite soll von Person 2 geraten werden. Ein 3 Textfeld soll eine Information darüber liefern wie nah die geratene Zahl an der Vorgegeben liegt.
Bedingung für die Ergebnisausgabe in Feld 3 ist:
größer oder kleiner als die vorgegbene Zahl, unter 10 oder gleich 10 an der vorgegeben Zahl oder größer als 10 von der Ursprungszahl entfernt.
Ich darf aber nur mit If und Select case arbeiten
Folgenden Code habe ich erstellt:
Quellcode
- 'Variablendeklaration
- Dim btewert1 As Byte
- Dim btewert2 As Byte
- Dim strerg1 As String
- Dim strerg2 As String
- Dim btediff1 As Integer
- Dim btediff2 As Integer
- btewert1 = Me.txt_wert1
- btewert2 = Me.txt_wert2
- 'Bei unzulässiger Eingabe
- If btewert1 <= 0 Then 'Wenn die Eingabe = 0 ist
- MsgBox "Sie mogeln!" & vbCrLf & _
- "Die Zahl soll größer als 0 sein!" & vbCrLf & _
- "Möchten Sie es erneut versuchen?", vbYesNo, "Wert = 0" 'Mitteilung über eine falsche Eingabe"
- If vbYes Then 'Wenn auf Yes geklickt wird
- Me.txt_wert1.Value = "" 'Die Einagebfelder leeren
- Me.txt_wert2.Value = ""
- Me.txt_wert1.SetFocus 'Den Curser in das Feld Wert1 setzen
- Else
- Unload Me 'Wenn auf No geklickt wird, Mitteilung schleißen
- End If
- ElseIf btewert1 >= 100 Then 'Wenn die Eingabe >=100
- MsgBox "Sie mogeln!" & vbCrLf & _
- "Die Zahl soll kleiner als 100 sein!" & vbCrLf & _
- "Möchten Sie es erneut versuchen?", vbYesNo, "Wert = 100" 'Mitteilung über eine falsche Eingabe
- If vbYes Then 'Wenn auf Yes geklickt wird
- Me.txt_wert1.Value = "" 'Die Einagebfelder leeren
- Me.txt_wert2.Value = ""
- Me.txt_wert1.SetFocus 'Den Curser in das Feld Wert1 setzen
- Else
- Unload Me 'Wenn auf No geklickt wird Mitteilung schließen
- End If
- 'Bei zulässiger Eingabe
- Else
- 'Variablendeklaration wenn die Vorgabnezahl OK
- btediff1 = btewert1 - 10 'Vorgabewert (txt_wert1) -10
- btediff2 = btewert1 + 10 'Vorgabewert (txt_wert1) +10
- 'Größer oder kleiner als die Vorgabe
- Select Case btewert2
- Case Is > btewert1 'Ratezahl ist zu groß
- strerg1 = "Sie werden übermütig"
- Case Is < btewert1 'Ratezahl ist zu klein
- strerg1 = "Sie müssen in größeren Dimensionen Denken!"
- Case Is = btewert1 'Ratezahl getroffen
- strerg1 = "Gratulation. Sie haben es geschafft!"
- Case Else
- End Select
- 'Vorgbae wurde um höchstens 10 oder mehr als 10 verfehlt
- Select Case btewert2
- Case Is = btewert1 'Ratezahl getroffen
- strerg2 = ""
- Case Is >= btediff1 'Ratezahl ist größer oder gleich als angegebene Zahl -10
- strerg2 = "Das ist schon ziemlich gut"
- Case Is < btediff1 'Ratezahl ist kleiner als angegebene Zahl -10
- strerg2 = "Strengen Sie sich etwas mehr an"
- Case Is <= btediff2 'Ratezahl ist kleiner oder gleich als angegebne Zahl +10
- strerg2 = "Das ist schon ziemlich gut"
- Case Is > btediff2 *************** 'Ratezahl ist größer als angegebene Zahl +10
- strerg2 = "Strengen Sie sich etwas mehr an"
- Case Else
- End Select
- End If
- Me.txt_ergebnis.Value = strerg2 + vbNewLine + strerg1 'Textausgabe im Ergebnisfeld
Das letze Case If, mit den Sternchen im Kommentar, zeigt im Ergebnisfeld nicht an. Nach meinem Dafürhalten müsste aber funktionieren,
oder ich sehe den Wald vor lauter Bäumen nicht.
Kann mit jemand Helfen?
Mit vielem Dank vorab
Holger
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Holger“ ()