Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1212to1216
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

Frage zu Setfocus nach msgbox Userform

Frage zu Setfocus nach msgbox Userform
chris

Private Sub tb_Ident_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Select Case KeyCode
Case 13
'prüfen ob länge eingegebener ident stimmt - erst wenn ok in Listbox übernehmen
If Len(frm_Programm_1.tb_Ident) = 11 Then
'Eingegebene länge OK
Me.lb_Ident.AddItem Me.tb_Ident.Value
Else
MsgBox ("Bitte prüfen Sie die Ident!" & Chr(10) & Chr(10) & "        Länge  _
nicht OK"), vbCritical, "abbruch"
Me.tb_Ident.SetFocus
Exit Sub
End If
Case 37, 39, 8, 46
Case 48 To 57
Case 96 To 105
Case Else
KeyCode = 0
End Select
End Sub
Hallo noch einmal an alle,
muss erneut um Hilfe bitte.Komme nicht weiter.
ich habe eine userform.In dieser sind u.a ein Commandbutton eine Textbox und ein Frame und eine Listbox.
Ich will jetzt das man in die textbox nur zahlen eingeben darf und pfeil rechts und links und bei Enter ein anderes Makro ausgeführt wird.
Das klappt auch super aber ich möchte das ganz am anfang wenn also die Enter Taste gedrückt wird geprüft wird ob die Länge der eingegebenen zahl 11 Stellen hat.
Das klappt auch.Was ich nicht hinbekomme ist wenn die zahl weniger als 11 Stellen hat kommt ja im Beispiel oben eine fehler msgbox.
Danach möchte ich gerne den Focus wieder in die Textboix geben das versuche ich mit
Me.tb_Ident.SetFocus
aber das klappt nicht.Was mache ich falsch ?
Danke gruß Chris
AW: Frage zu Setfocus nach msgbox Userform
02.05.2011 11:28:25
Rudi
Hallo,
schränke die Eingabemöglichkeit im KeyPress-Ereignis ein und prüfe die Länge im Exit-Ereignis.
Gruß
Rudi
AW: Frage zu Setfocus nach msgbox Userform
02.05.2011 11:49:54
chris
Hallo Rudi,
habe es jetzt etwa so geändert.Klappt aber auch nicht:?
Private Sub tb_Ident_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If Len(frm_Programm_1.tb_Ident) = 11 Then
'Eingegebene länge OK
Me.lb_Ident.AddItem Me.tb_Ident.Value
Else
MsgBox ("Bitte prüfen Sie die Ident!" & Chr(10) & Chr(10) & "        Länge  _
nicht OK"), vbCritical, "abbruch"
Cancel = True
End If
Cancel = True
End Sub

Aus irgend einem Grund hat immer das Frame in der die textbox steckt den focus und gibt in nicht her ?
Anzeige
AW: Frage zu Setfocus nach msgbox Userform
02.05.2011 11:52:53
Rudi
Hallo,
dann lösch mal das zweite Cancel=True.
Gruß
Rudi
AW: Frage zu Setfocus nach msgbox Userform
02.05.2011 12:07:11
chris
Hallo,
das bringt auch nichts.
Mein Bekannter sagte das das Problem ist das die Userform vbModeless ist und nicht vbModal.
Aber das sollte so bleiben.
Danke noch einmal
jetzt hab ich verstanden.
02.05.2011 12:44:11
Rudi
Hallo,
Private Sub tb_Ident_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If Len(tb_Ident) = 11 Then
'Eingegebene länge OK
lb_Ident.AddItem tb_Ident.Value
Else
MsgBox ("Bitte prüfen Sie die Ident!" _
& Chr(10) & Chr(10) _
& "        Länge nicht OK"), vbCritical, "Abbruch"
Cancel = True
Repaint
End If
End Sub

Gruß
Rudi
Anzeige
Klappt alles nicht - Hier eine Beispieldatei
02.05.2011 13:43:27
chris
Hallo zusammen,
leider klappt alles nicht so wie ich es möchte.
Ich habe eine Beispieldatei erstellt.
CommandButton1:
- UserForm wird vbModeless geladen
- Eingabe in Textbox (z.B. '444') und Enter-Taste
- Msgbox kommt und wird mit OK bestätigt
- Textbox verliert den Fokus, dieser kann auch per SetFocus nicht mehr gesetzt werden
CommandButton2:
Wie oben, nur vbModal
Textbox hat auch nach der MsgBox noch den Fokus.
Ist es denn irgendwie möglich, das auch wenn das Userform modeless angezeigt wird, trotzdem der Fokus passt?
Hab ich da etwa einen Bug gefunden?
Danke noch einmal !
https://www.herber.de/bbs/user/74630.zip
Anzeige
Klappt alles nicht: Wo ist REPAINT?
02.05.2011 13:48:58
Rudi
Hallo,
warum setzt du meine Lösung nicht um?
Gruß
Rudi
AW: Klappt alles nicht: Wo ist REPAINT?
02.05.2011 14:00:06
chris
Habe ich doch gemacht Rudi.
Es klappt trotzdem nicht.
Kannst Du es bitte testen ?
P.s habe auch 2 mal repaint rein und es geht auch nicht ?
Private Sub CommandButton1_Click()
Unload Me
End Sub

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If TextBox1  "" And Len(TextBox1)  11 Then
MsgBox "Hallo"
Repaint
Cancel = True
Repaint
End If
End Sub

AW: Klappt alles nicht: Wo ist REPAINT?
02.05.2011 14:20:37
Rudi
Hallo,
was geht nicht? Bei mir (XP) einwandfrei.
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If TextBox1  "" And Len(TextBox1)  11 Then
MsgBox "Hallo"
Cancel = True
Repaint
End If
End Sub

Gruß
Rudi
P.S. Du musst nat. erst einmal in die TB rein oder sie in der Aktivierreihenfolge auf Platz 1 setzen. Beim Start der UF hat jetzt der CmdBtn den Fokus.
Anzeige
AW: mit neuer Datei Fehler - klappt nicht
02.05.2011 14:45:18
chris
Hallo also bei mir Office 2003 geht es nicht ?
Bin am verzweifeln.
Habe noch einmal die BeispielDatei geändert angehängt.
Also wenn ich in dieser Datei Userform ins textfeld z.b 1234 eingebe und dann enter drücke kommt eine msgbox.
nach dem ich die msgbox mit OK bestätigt habe soll eigentlich der Focus wieder im textfeld sein.Ist er aber nicht.
Was mache ich anders als Du ?
gruß
https://www.herber.de/bbs/user/74632.zip
klappt auch bei mir nicht mehr ?
02.05.2011 15:26:06
Rudi
Hallo,
bin vollkommen irritiert. Vorhin ging's, jetzt nicht mehr.
Vielleicht hab aber vorhin auch nen Fehler gemacht.
Gruß
Rudi
Anzeige
anderer Vorschlag
02.05.2011 15:44:58
Tino
Hallo,
einen Weg über Exit habe ich auch nicht gefunden.
Du kannst es aber ins Click- Ereignis des Button einbauen.
Private Sub CommandButton1_Click()
If TextBox1  "" And Len(TextBox1)  11 Then
MsgBox "Hallo"
TextBox1.SetFocus
Else
Unload Me
End If
End Sub
Gruß Tino
AW: anderer Vorschlag
02.05.2011 16:10:53
chris
das geht nicht.Weil das Makro auf den Commandbutton zu einem anderen zeitpunkt ausgeführt wird.
AW: anderer Vorschlag
02.05.2011 16:19:41
Tino
Hallo,
fange den Code so lange mit einer Variablen ab, bis der Code auf dem Button ausgeführt werden darf.
Sonst habe ich jetzt auch keine Idee.
Gruß Tino
Anzeige
noch ein Vorschlag
02.05.2011 16:26:07
Rudi
Hallo,
es klemmt nur an der MsgBox. Ohne geht's
Vielleicht den Hinweis in ein Label (Label1) schreiben.
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim t
If TextBox1.Text  "" And Len(TextBox1.Text)  11 Then
Cancel = True
Label1.Caption = "genau 11 Zeichen eingeben!"
Repaint
t = Timer
Do While Timer 

Gruß
Rudi
AW: noch offen
02.05.2011 17:55:15
chris
Hallo,
genau das ist mir auch aufgefallen das es nur an der msgbox liegt.,
Habe diese auch schon versucht vbSystemModal usw.. zu laden funzt5 aber nichts.
Schade das es so schwiertig bzw. nicht möglich ist.
Ich lasse aber trotzdem mal offen vielleicht weiß noch jemand was.
Vielen dank bis dahin !!
gruß Chris
Anzeige
AW: so würde es doch gehen.? Danke
04.05.2011 08:52:02
chris
Hallo Rudi,
danke noch einmal für Deine Vorschläge.
Habe heute noch mal rumprobiert und habe es geschafft.
Zwar muss ich die Form entladen und dann noch einmal anzeigen lassen aber es geht.
Hier der Code zum mal anschauen.
Private Sub tb_Ident_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Select Case KeyCode
Case 13
If Len(frm_Programm_1.tb_Ident) = 11 Then
Me.lb_Ident.AddItem Me.tb_Ident.Value
frm_Programm_1.tb_Ident = ""
KeyCode = 0
ElseIf frm_Programm_1.tb_Ident = "" Then
btn_suche_Ident.SetFocus
Else
Unload frm_Programm_1
frm_Programm_1.Show
MsgBox ("Bitte prüfen Sie die Ident!" & Chr(10) & Chr(10) & "        Länge  _
nicht OK!"), vbCritical, "abbruch"
frm_Programm_1.tb_Ident.SetFocus
KeyCode = 0
End If
Case 37, 39, 8, 46
Case 48 To 57
Case 96 To 105
Case 17, 86
Case Else
KeyCode = 0
End Select
End Sub

Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige