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

Forumthread: MessageBox mit Retry und ok

MessageBox mit Retry und ok
03.01.2006 15:00:54
Jan
Moin ihr schlauen Leute,
ich brauche eure Hilfe.
Ich habe eine Userform programmiert und möchte nach einer Prüfung des Eingabewertes eine MsgBox erzeugen, falls der Wert nicht in Ordnung ist. Dabei soll es die Button "OK" und "Wiederholen" geben. Bei "OK" soll in die nächste Textbox gesprungen werden und bei "Wiederholen" soll in die TextBox1 zurückgegangen und der Zahlenwert markiert werden.
Hier mein Versuch - funktioniert aber nicht:

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If TextBox1.Value < 0 or TextBox1.Value > 100 Then	'Wert soll zw. 0 und 100 sein
TextBox1.Value = 50	'Wertänderung bei Fehler auf 50
MsgBox "Geben Sie einen gültigen Prozentsatz zwischen 0 und 100 ein." _
& Chr(13) & Chr(13) & _
"Die Eingabe wurde auf 50% geändert.", vbRetry+vbOK,_
"Eingabefehler"
End If
If MsgBox = vbRetry Then
TextBox1.SetFocus
TextBox1.SelStart = 0
TextBox1.SelLength = Len(TextBox1.Value)
End If
End Sub

Ich hoffe ihr könnt mir helfen...
Gruß Jan
Anzeige

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: MessageBox mit Retry und ok
03.01.2006 15:04:28
Eugen
hi

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If TextBox1.Value < 0 or TextBox1.Value > 100 Then	'Wert soll zw. 0 und 100 sein
TextBox1.Value = 50	'Wertänderung bei Fehler auf 50
A = MsgBox "Geben Sie einen gültigen Prozentsatz zwischen 0 und 100 ein." _
& Chr(13) & Chr(13) & _
"Die Eingabe wurde auf 50% geändert.", vbRetry+vbOK,_
"Eingabefehler"
End If
If A = 4 Then
TextBox1.SetFocus
TextBox1.SelStart = 0
TextBox1.SelLength = Len(TextBox1.Value)
End If
End Sub

mfg
Anzeige
AW: MessageBox mit Retry und ok
03.01.2006 15:11:18
Andi
Hi Jan,
wie Eugen schon richtig schreibt, musst Du den Rückgabewert der MsgBox erst einer Variablen zuweisen, bevor Du ihn auswerten kannst, bei Eugen heisst die Variable A (sollte als Integer dimensioniert sein).
Desweiteren gibt es vbRetry imho nur als Rückgabe-Konstante einer MsgBox, aber nicht als Argument; als Argument könntest Du höchstens vbRetryCancel verwenden, dann hast Du aber statt 'OK' 'Abbrechen'. Völlige Freiheit in der Beschriftung der Buttons hättest Du in einem UserForm.
Schönen Gruß,
Andi
Anzeige
AW: MessageBox mit Retry und ok
03.01.2006 17:32:23
Jan
Dank schon mal für die Hilfe,
jetzt ist mein nächstes Problem, daß die TextBox1.SetFocus-Funktion nicht funktioniert :(
Ich weiß nicht woran es liegt. Hab den Code einem CommandButton zugewiesen und das geht! Also wo liegt das Problem?!?
A = MsgBox(..., vbYesNo, ...)
If A = 6 Then
TextBox1.SetFocus
TextBox1.SelStart = 0
TextBox1.SelLength = Len(TextBox1.Value)
End If
Gruß Jan
Anzeige
AW: MessageBox mit Retry und ok
03.01.2006 18:18:26
Andi
Hi,
das kann ich nur dann reproduzieren, wenn die MsgBox nicht direkt von einem Ereignis in dem UserForm aufgerufen wird, sondern zB aus einem Makro in nem Standardmodul.
In dem Fall weiss Dein Programm nicht, wo es die TextBox1 suchen soll, wenn man es ihm nicht ausdrücklich sagt; probier mal dies:
UserForm1.TextBox1.SetFocus
Schönen Gruß,
Andi
Anzeige
TextBox - setfocus
03.01.2006 23:28:03
Jan
Moin Andi,
danke für die Mühe, funktioniert nur leider auch nicht :(
Hast Du noch nen anderen Vorschlag?!?
Gruß Jan
AW: TextBox - setfocus
03.01.2006 23:43:06
Andi
Kannst Du mal Deine Mappe hochladen?
Schönen Gruß,
Andi
AW: TextBox - setfocus
04.01.2006 16:14:53
Andi
Hi,
das Problem tritt (bzw trat) ja nur auf, wenn TextBox2_Exit durch den OK-Button ausgelöst wurde, sprich wenn das UserForm ge-unloaded wurde. Und dann is ja logischerweise keine TextBox2 mehr da, auf die der Fokus gesetzt werden könnte.
Ich hab die gleiche Abfrage auch dem TextBox2_Exit-Ereignis auch noch in's Click-Ereignis des OK-Button eingefügt, so dass die UserForm geladen bleibt, bis ein gültiger Wert in TextBox2 eingegeben wurde.
https://www.herber.de/bbs/user/29717.xls
Schönen Gruß,
Andi
Anzeige
AW: TextBox - setfocus
04.01.2006 17:51:17
Jan
Hi Andi,
ich danke für Deine Mühe, aber leider hat Deine Tabelle mein Problem nicht gelöst. Aber es hat mich motiviert (eigentlich hatte ich nämlich keine Lust mehr), mich noch weiter mit dem Problem auseinanderzusetzen, und siehe da: Jetzt klappt es auch wenn man die TextBox mit "Enter" verläßt - so wie ich es wollte.
-> Cancel = TRUE bzw. FALSE
'Zins auf mind. 50

Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim A As Integer
If TextBox2.Value < 0 Or TextBox2.Value > 100 Then
Cancel = True
TextBox2.Value = 50
A = MsgBox("Geben Sie einen gültigen Prozentsatz zwischen 0 und 100 ein." _
& Chr(13) & Chr(13) & _
"Die Eingabe wurde auf 50% geändert. Wert ändern?", _
vbYesNo, "Eingabefehler")
If A = 6 Then
TextBox1.Value = "Musterbank" 'Funktioniert
TextBox2.SetFocus
TextBox2.SelStart = 0
TextBox2.SelLength = Len(TextBox2.Value)
Else
Cancel = False
End If
End If
End Sub

Vielen Dank
Jan
Anzeige
dann passt's ja...
04.01.2006 18:05:12
Andi
Schönen Gruß,
Andi
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

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