Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Sprünge in einer UserForm

218 views
Skip to first unread message

Tim Wagner

unread,
Sep 1, 2002, 5:24:40 PM9/1/02
to
Hallo,

in meiner UserForm sollen von einer Reise ein Anfangsdatum und ein Enddatum
in eine UserForm eingegeben werden. Das Anfangsdatum wird mit der Funktion
isDate überprüft, ob es ein gültiges Datum ist. Wenn es keine gültiges Datum
ist, dann kommt die MsgBox bla bla bla, und danach soll die
Eingabemarkierung wieder auf das Eingabefenster zurückgehen, und nicht in
die nächste Textbox (Enddatum) springen. Kann mir jemand sagen wie das geht,
gibt es sowas wie ein jump Befehl, oder hilft da Goto??

Danke für eine Antwort

Tim Wagner


Ulrich Weigel

unread,
Sep 1, 2002, 4:59:00 PM9/1/02
to
"Tim Wagner" <Tim.W...@gmx.de> schrieb im Newsbeitrag
news:aktt1f$7ek$07$1...@news.t-online.com...
Hallo Tim,
TextBox2.SetFocus

--
Grus
Ulrich

Mail to MDLLe...@aol.com
WinXP
OfficeXP
u.v.a.

Rechtschreibfehler sind gewollt und dienen der Belustigung des Lesers


Ulrich Weigel

unread,
Sep 1, 2002, 7:26:30 PM9/1/02
to
Hallo Tim,
ich vergas zu erwähnen das Du noch ein Cancel=True einfügen mußt, nach
Deiner MsgBox Bla, Bla, damit VBA nicht anschließend doch zur nächsten
TextBox springt.

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If TextBox1.Value <> "1" Then
TextBox1.SetFocus
Cancel = True
End If
End Sub

--
Grus
Ulrich

Mail to MDLLe...@aol.com
WinXP
OfficeXP
u.v.a.

Rechtschreibfehler sind gewollt und dienen der Belustigung des Lesers

"Tim Wagner" <Tim.W...@gmx.de> schrieb im Newsbeitrag
news:aktt1f$7ek$07$1...@news.t-online.com...

Claus Paltra

unread,
Sep 2, 2002, 12:53:50 AM9/2/02
to
Hi Ulrich, hi Tim:

Ulrich Weigel wrote:
...

> Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
> If TextBox1.Value <> "1" Then

> # TextBox1.SetFocus
> # Cancel = True

Ich stehe mit SetFocus total auf dem Kriegsfuss, ich würde hier

SendKeys "+{TAB}"

reinschieben.
Hat den Vorteil, dass TextBox1 gleich markiert ist, und der
User direkt das Feld überschreiben kann, ohne was zu markieren.
(W2K, XL2K)

Gruss+HAND,
Claus


Frank Arendt-Theilen

unread,
Sep 2, 2002, 3:28:28 AM9/2/02
to
Hallo Claus,
nee, das muss nicht sein, da du nie sicher sein kannst, ob das
Betriebssystem auch das Zeichen für die gewünschte Aktion abholt.
Daher besser mit den Methoden/Eigenschaften SetFocus, SelStart,
SelLength und SelText arbeiten.

Folgendes Bsp:
Erstelle einer Userform mit zwei Textboxen und einem CommandButton,
dann folgender Code

Private Sub CommandButton1_Click()
TextBox2.Text = TextBox1.Text
TextBox1.SetFocus
TextBox1.SelStart = 0
TextBox1.SelLength = Len(TextBox1.Text)
End Sub

Nach dem Klick auf den CommandButton wird der Text von Textbox1 nach
Textbox2 übertragen, anschließend der Focus wieder auf Textbox1
gesetzt und der gesamte Text makiert, so das der User sofort mit einer
neuen Texteingabe in Textbox1 weiterarbeiten kann.

MfG Frank
_____________________________________________________
Frank Arendt-Theilen, Microsoft MVP für Excel, Hameln
eMail: Thei...@t-online.de, Homepage: http://www.xl-faq.de

Claus Paltra

unread,
Sep 2, 2002, 4:14:56 AM9/2/02
to
Hi Frank,

Frank Arendt-Theilen wrote:

...


> Private Sub CommandButton1_Click()
> TextBox2.Text = TextBox1.Text
> TextBox1.SetFocus
> TextBox1.SelStart = 0
> TextBox1.SelLength = Len(TextBox1.Text)
> End Sub

...

Das ist wohl die "korrekte" Methode, aber mit meinen
"SendKeys" hatte ich noch keine Probs, es sei denn,
man hat eine etwas umfangreichere Userform mit mehreren
Textboxen die anspringbar sind. Da kann man mit "SendKeys"
schon mal Excel abklemmen.

Sei´s wie´s sei, mir ist ein "Einzeiler" lieber als ein
"Dreizeiler", bin halt faul.

Gruss+HAND,
Claus


Michael Schwimmer

unread,
Sep 3, 2002, 4:55:54 PM9/3/02
to
Hallo Claus,

"Claus Paltra" <c...@paltra.de> schrieb:


> Das ist wohl die "korrekte" Methode, aber mit meinen
> "SendKeys" hatte ich noch keine Probs, es sei denn,
> man hat eine etwas umfangreichere Userform mit mehreren
> Textboxen die anspringbar sind. Da kann man mit "SendKeys"
> schon mal Excel abklemmen.
>
> Sei´s wie´s sei, mir ist ein "Einzeiler" lieber als ein
> "Dreizeiler", bin halt faul.

Du entscheidest dich bei deinem Einzeiler für ein
"kann funktionieren".
Und du bist dir dessen sogar bewusst!

Dann lieber einmal drei Zeilen mehr geschrieben, aber dafür
die Gewissheit, dass die Sache funzt. Und das sogar ohne die
Möglichkeit, dass ein anderes Programm dein SendKeys
abbekommt.
Eins ist sicher, bei deiner Einstellung käme ein von dir
geschriebenes Programm bei mir nicht auf die Platte!

MfG
Michael


--
-------------------------------------------
Michael Schwimmer
Home : http://schwimmer.bei.t-online.de

Claus Paltra

unread,
Sep 4, 2002, 1:18:25 AM9/4/02
to
Hallo Michael,

Michael Schwimmer wrote:
...


> Du entscheidest dich bei deinem Einzeiler für ein
> "kann funktionieren".
> Und du bist dir dessen sogar bewusst!
>
> Dann lieber einmal drei Zeilen mehr geschrieben, aber dafür
> die Gewissheit, dass die Sache funzt. Und das sogar ohne die
> Möglichkeit, dass ein anderes Programm dein SendKeys
> abbekommt.
> Eins ist sicher, bei deiner Einstellung käme ein von dir
> geschriebenes Programm bei mir nicht auf die Platte!

...

Vielen Dank für die Blumen. Wenn ich nicht schon oft Deine
Antworten hier mitgelesen hätte, würde ich fragen, wo Dein
Problem liegt nochmal etwas zu dem Thema zu posten, zumindest
ohne ein OT zu setzen.
Ursprung: Zwei Eingabefelder beim Urposter Tim mit einer
Mini-Abfrage. Antwort von Ulrich (und verbessert von Frank)
mit SetFocus. Anwort von Claus: Ich würde hier ...
Verstehst Du?
Ich wollte und will Tim nicht davon abhalten die richtige
Umgangsweise mit Sprüngen in einer UserForm sich anzugewöhnen,
sondern wollte nur meine einfache Lösung für so eine kleine
Userform vorschlagen.
Dass dies bei einer umfangreichen UserForm mit vielen Abfragen
nicht ok ist, habe ich doch selbst geschrieben!

Nochmals: Ich gehe von Tim´s Anfrage aus!
Du unterstellst mir hier irgendwelche bewusst in Kauf genommenen
Abstürze. Und dann noch der Satz: "bei deiner Einstellung...",
also Michael, das ist völlig daneben!
In der Art der Formulierung und in der Heftigkeit.

Gruss+HAND,
Claus

Michael Schwimmer

unread,
Sep 4, 2002, 1:09:29 PM9/4/02
to
Hallo Claus,

"Claus Paltra" <c...@paltra.de> schrieb:


> Vielen Dank für die Blumen. Wenn ich nicht schon oft Deine
> Antworten hier mitgelesen hätte, würde ich fragen, wo Dein
> Problem liegt nochmal etwas zu dem Thema zu posten, zumindest
> ohne ein OT zu setzen.

das Thema finde absolut ich nicht OT. Es lesen hier viele
Leute mit und manche könnten nach deinem Posting auf den
Gedanken kommen, dass man, um zwei Zeilen Code zu sparen,
schon mal SendKeys einsetzen kann.


> Ursprung: Zwei Eingabefelder beim Urposter Tim mit einer
> Mini-Abfrage. Antwort von Ulrich (und verbessert von Frank)
> mit SetFocus. Anwort von Claus: Ich würde hier ...
> Verstehst Du?

Ich verstehe das schon, aber SetFocus ist hier der einzig
richtige Weg. SendKeys kann unerwünschte Nebenwirkungen
haben, das fängt damit an, dass andere Anwendungen dein
SendKeys abbekommen können und geht soweit, dass dein
Nummernblock abgeschaltet wird.


> Ich wollte und will Tim nicht davon abhalten die richtige
> Umgangsweise mit Sprüngen in einer UserForm sich anzugewöhnen,
> sondern wollte nur meine einfache Lösung für so eine kleine
> Userform vorschlagen.
> Dass dies bei einer umfangreichen UserForm mit vielen Abfragen
> nicht ok ist, habe ich doch selbst geschrieben!

Es ist egal, ob es sich um eine Minianwendung handelt, oder ein
großes Projekt. Der Einsatz von SendKeys ist trotzdem nicht
gerechtfertigt. Faschl ist eben flasch. SendKeys sollte nur dort
angewendet werden, wo nichts anderes mehr geht.

>
> Nochmals: Ich gehe von Tim´s Anfrage aus!

Nochmal, es hat nichts mit Tims Anfrage zu tun.

> Du unterstellst mir hier irgendwelche bewusst in Kauf genommenen
> Abstürze. Und dann noch der Satz: "bei deiner Einstellung...",
> also Michael, das ist völlig daneben!

Du schreibst doch selber ...

>>Das ist wohl die "korrekte" Methode, aber mit meinen
>>"SendKeys" hatte ich noch keine Probs, es sei denn,
>>man hat eine etwas umfangreichere Userform mit mehreren
>>Textboxen die anspringbar sind. Da kann man mit "SendKeys"
>>schon mal Excel abklemmen.

Und hast richtig erkannt, dass es nicht die "korrekte" Methode
ist und man "schon mal Excel abklemmen kann". Und trotzdem
propagierst du es, um ein paar Zeilen Code zu sparen. Das
ist eben keine richtige Einstellung.


> In der Art der Formulierung und in der Heftigkeit.

Wenn es zu heftig war, dann entschuldige, das wollte
ich nicht.

Claus Paltra

unread,
Sep 5, 2002, 2:26:59 PM9/5/02
to
Hi Michael,

schon mal Danke für die ausführliche Antwort, habe ein wenig
geschnippt!

Michael Schwimmer wrote:
[...]


> Es ist egal, ob es sich um eine Minianwendung handelt, oder ein
> großes Projekt. Der Einsatz von SendKeys ist trotzdem nicht
> gerechtfertigt. Faschl ist eben flasch. SendKeys sollte nur dort
> angewendet werden, wo nichts anderes mehr geht.

Zwei Menschen, zwei Meinungen, aber: das SendKeys falsch ist, kann
ich nicht akzeptieren. Es ist Deiner Meinung und Erfahrung nach
riskant und unter Umständen fehlerhaft, aber deswegen ist es nicht
falsch.

>> Nochmals: Ich gehe von Tim´s Anfrage aus!
>
> Nochmal, es hat nichts mit Tims Anfrage zu tun.

Das sehe ich auch nicht so. In Tim´s Fall kann er mit Sicherheit
zig mal hintereinander mit Sendkeys springen, ohne dass auch nur
das geringste passiert. Wenn´s nicht mit Tim zu tun hätte, müsste
der Thread: "Sendkeys einsetzen, ja/nein?" heissen.


>> Du unterstellst mir hier irgendwelche bewusst in Kauf genommenen
>> Abstürze. Und dann noch der Satz: "bei deiner Einstellung...",
>> also Michael, das ist völlig daneben!
>
> Du schreibst doch selber ...

Haaalt! (meine a Taste prellt!)
Da ging es mit wirklich nur um die Wörter: "bei deiner Einstellung..."
Das scheint so, als ob Du von einem eingesetzten Sendkeys auf eine
ganze Person rückschliessen würdest. Nein, dieser Satz an sich war
überflüssig.

[...]

> Und trotzdem
> propagierst du es, um ein paar Zeilen Code zu sparen. Das
> ist eben keine richtige Einstellung.

Würde ich in so einem Fall wieder tun. Was das mit richtiger
Einstellung zu tun hat?

>> In der Art der Formulierung und in der Heftigkeit.
>
> Wenn es zu heftig war, dann entschuldige, das wollte
> ich nicht.

ACK, ;-) Jetzt ist es vergessen!
Du hast aber Erfolg gehabt, SendKeys kann ich jetzt einfach
nicht mehr einbauen, gefühlsmässig. Ich habe sogar schon überlegt,
ob ich alte Progis mal durchschaue und entsprechend korrigiere.
Im Grunde also, Danke.

Gruss+HAND,
Claus

Michael Schwimmer

unread,
Sep 5, 2002, 4:05:58 PM9/5/02
to
Hallo Claus

"Claus Paltra" <cl...@paltra.de> schrieb:

> ACK, ;-) Jetzt ist es vergessen!
> Du hast aber Erfolg gehabt, SendKeys kann ich jetzt einfach
> nicht mehr einbauen, gefühlsmässig. Ich habe sogar schon überlegt,
> ob ich alte Progis mal durchschaue und entsprechend korrigiere.

freut mich, dass du den richtigen Weg eingeschlagen hast.
Der erste Schritt zur Entwöhnung ;-)

Jetzt aber mal im Ernst. Mit SendKeys habe ich so schlechte
Erfahrungen gemacht, dass ich mich lieber ein paar Stunden
hinsetze und das gleiche mit SendMessage mache. Gut, es wird
Situationen geben, wo man nicht ohne auskommt, dann würde
ich SendKeys auch einsetzen. Aber ohne Not? Nein!
Vor Jahren habe ich damit gearbeitet, um fremde Programme
zum Abspeichern von Protokolldateien zu bewegen. Und das
im Stundenintervall. Obwohl der Rechner sonst nicht angerührt
und als Betriebssystem NT verwendet wurde, ging nach
ein paar Tagen meist nichts mehr. Irgendwann habe ich dann
mal in einer NG über die Nebenwirkungen von SendKeys gelesen.
Nachdem ich daraufhin SendKeys rausgeschmissen habe lief die
ganze Sache dann noch jahrelang störungsfrei.

0 new messages