Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1436to1440
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

setfocus setzt den Fokus nicht

setfocus setzt den Fokus nicht
21.07.2015 10:06:56
P-Quest
Hallo,
ich führe in der Textbox txtMenge einer Userform eine Prüfung durch. Sollte die Prüfung negativ sein, so erscheint eine Fehlermeldung.
Das klappt, dank der zahlreichen Hilfen hier im Forum, auch problemlos. Es gibt nur einen kleinen Schönheitsfehler.
Nachdem ich die Fehlermeldung bestätigt habe, soll der focus auf das Feld txtMenge gesetzt werden. Leider springt der Cursor aber immer in das nächste Feld.
Private Sub txtMenge_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If blnSchliessen = False Then
txtMenge = Trim(txtMenge.Value)
If Val(txtMenge.Value) = 0 Or txtMenge.Value = "" Then
If Not UFCloseMode Then
MsgBox "Bitte geben Sie für die Menge einen Wert größer 0 ein!", vbCritical, " _
Falsche Eingabe"
txtMenge.SetFocus
End If
Else
If Not cbID = "" Then
Call WertBer
Else
txtWert.Value = 0
End If
End If
End If
End Sub
Gibt es hier noch eine Eigenschaft, die ich ändern muss?
Bei diesem Beispiel funktioniert es einwandfrei.
Private Sub Checkdata(fault)
Dim ws As Worksheet
Dim i As Byte
Dim lngLastRow As Long
fault = 0
Set ws = Worksheets("EinAus")
lngLastRow = ws.Cells(Rows.Count, 1).End(xlUp).Row
If cbID = "" Then
MsgBox "Sie müssen eine ID auswählen.", 16
fault = 1
cbID.SetFocus
ElseIf txtDatum = "" Then
MsgBox "Sie müssen ein Datum eingeben.", 16
fault = 1
txtDatum.SetFocus
ElseIf Val(txtMenge.Value) = 0 Or txtMenge.Value = "" Then
MsgBox "Bitte geben Sie für die Menge einen Wert größer 0 ein!", vbCritical, "Falsche  _
Eingabe"
fault = 1
txtMenge.SetFocus
End If
End Sub
Gruß,
Peter

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: setfocus setzt den Fokus nicht
21.07.2015 10:25:03
Rudi
Hallo,
....
Cancel = True
txtMenge.SetFocus
....

Gruß
Rudi

AW: setfocus setzt den Fokus nicht
21.07.2015 11:03:29
P-Quest
Kurz und knackig. Danke :-)

AW: setfocus setzt den Fokus nicht
21.07.2015 10:32:50
Daniel
Hi
du hast das EXIT-Event ausgewählt.
das Exit-Event wird ausgeführt, bevor Excel vom alten auf das neue Steuerelement wechselt, dh das alte Steuerelement hat noch den Focus wenn diesese Event läuft, deswegen ist die Anweisung txtMenge.SetFocus zu diesem Zeitpunkt sinnlos.
die richtige Anweisung an dieser Stelle wäre: Cancel = True
In einem Event-Makro ist Cancel die Eigenschaft, welche Festlegt, ob das auslösende Event (hier das Exit, welches du ja vermeiden willst) nach dem Makro normal ausgeführt wird oder nicht.
Setzt du die Variable auf True, wird das Event dann nicht mehr ausgeführt und der Focus bleibt auf dem alten Steuerelement.
Das zweite Makro ist kein Event-Makro, sondern ein normales Makro, daher ist hier deine Vorgehensweise passend.
Gruß Daniel

Anzeige
AW: setfocus setzt den Fokus nicht
21.07.2015 11:02:26
P-Quest
Wow, besten Dank für die ausführliche Antwort!
Ach ja...es klappt...natürlich!

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige