Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
540to544
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
540to544
540to544
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
TextBox und SetFocus Problem!
07.01.2005 11:41:49
Oliver
Hi an alle,
ich steck mal wider fest. Ich habe eine UserForm, mit mehreren TextBoxen, über die Eingaben erfolgen sollen. Durch ein AfterUpdate Ereignis wird überprüft, ob der eingegebene Wert eine Zahl ist. Wenn nicht, wird der TextBoxinhalt gelöscht. Wenn die Eingabe eine Zahl war, wird die nächste TextBox eingeblendet. Das funktioniert auch soweit. Nun möchte ich aber, dass wenn die Eingabe keine Zahl war, der Textfeldinhalt gelöscht wird und der Coursor wieder in der TextBox steht. Wenn die Eingabe eine Zahl war, soll der Coursor in der neu eingeblendeten TextBox stehen. Ich habe das mit nachfolgendem Code versucht zu realisieren, aber leider funktioniert das setzen des Coursors nicht. Woran kann das liegen? Hat jemand eine Idee? Wäre super.

Private Sub TextBox1_AfterUpdate()
If Not IsNumeric(TextBox1) Then
MsgBox "Die Eingabe muss nummerisch sein!"
TextBox1 = ""
TextBox1.SetFocus
GoTo Ende
End If
TextBox2.Visible = True
Label2.Visible = True
TextBox2.SetFocus
Ende:
End Sub

Danke Euch schon mal im Vorfeld für die Hilfe,
Oliver

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: TextBox und SetFocus Problem!
07.01.2005 11:47:58
Matthias
Hallo Oliver,
verwende zur Eingabeprüfung das Ereignis TextBox1_Exit(). Die hat ein Cancel-Argument, wenn du dieses in der Prozedur auf True stellst, wird die Textbox nicht verlassen.
Gruß Matthias
Einen Teil der Antwort verstehe ich leider nicht!
Oliver
Hi Matthias,
Danke Dir erst einmal für Deine Antwort. Eines verstehe ich leider nicht an Deiner Antwort. Was meinst Du mit
Zitat:
Die hat ein Cancel-Argument, wenn du dieses in der Prozedur auf True stellst, wird die Textbox nicht verlassen.
Was meinst Du damit. Wäre super, wenn Du mir das noch erklären könntest.
Gruß,
Oliver
AW: Einen Teil der Antwort verstehe ich leider nic
07.01.2005 12:01:36
Matthias
Hallo Oliver,
ein Beispiel:
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If TextBox1 = 12 Then Cancel = True
End Sub
Wenn die Textbox 12 drinstehen hat, dann wird sie einfach nicht verlassen...
Gruß Matthias
Anzeige
Leider funktionierts nur zum Teil!
Oliver
Danke Dir Matthias,
dass Du noch mal geantwortet hast. Ich habe das jetzt mal bei mir geändert. Die TextBox wird nun nicht verlassen, aber der Focus steht dann nicht in der TextBox, sondern auf einer Schaltfläche, die zum Beenden der UserFrom dient (Ist zu dem Zeitpunkt das einzige Element was in der UserForm angezeigt wird, da alles andere erst durch die richtigen Eingaben in den Textfeldern eingeblendet wird). Wenn ich aber eine Zahl eingebe und somit die Bedingung erfüllt ist, mir dann die zweite TextBox eingeblendet wird und der Focus in TextBox2 springen sollte, dann wird der Focus auf TextBox1 gesetzt. Wie bekomme ich das hin, das der Focus dann wieder in der TextBox steht, bzw. bei Erfüllung der Bedingung auf die nächste TextBox wechselt?
Mein Code sieht nun folgendermaßen aus:

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If Not IsNumeric(TextBox1) Then
MsgBox "Die Eingabe muss nummerisch sein!"
TextBox1 = ""
TextBox1.SetFocus
Else
TextBox2.Visible = True
Label2.Visible = True
TextBox2.SetFocus
End If
End Sub

Ich hoffe, da gibt es eine Lösung. Denn immer wieder die Felder mit der Maus anwählen ist lästig.
Danke und Gruß,
Oliver
Anzeige
AW: Leider funktionierts nur zum Teil!
07.01.2005 12:49:10
Matthias
Hallo Oliver,
du hast das Cancel = True vergessen...
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If Not IsNumeric(TextBox1) Then
MsgBox "Die Eingabe muss nummerisch sein!"
TextBox1 = ""
Cancel = True
Else
TextBox2.Visible = True
Label2.Visible = True
TextBox2.SetFocus
End If
End Sub
Evtl. kannst du noch die Eigenschaft "TakeFocusOnClick" des Buttons auf "False" stellen.
Viel Erfolg!
Matthias
Super, aber wie den Focus in die nächste TextBox!
Oliver
Hi Matthias,
super, jetzt bleibt der Coursor schon mal in der TextBox, wenn die Bedingung nicht erfüllt ist. Aber wie bekomme ich das hin, dass wenn die nächste TextBox eingeblendet wird, der Coursor in die gerade eingeblendete TextBox springt? Das tut er im Moment nämlich nicht. In dem Code ist zwar der Befehl TextBox2.SetFocus vorhanden, aber der Coursor bleibt in der anderen TextBox und markiert mir die vorher getätigte Eingabe. Gibt es da auch noch eine Lösung? Ich hoffe doch?
Danke noch mal,
Oliver
Anzeige
AW: Super, aber wie den Focus in die nächste TextB
07.01.2005 15:10:32
Matthias
Hallo Oliver,
es lag an einem kleinen Wörtchen:
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If Not IsNumeric(TextBox1) Then
MsgBox "Die Eingabe muss nummerisch sein!"
TextBox1 = ""
Cancel = True
Else
TextBox2.Visible = True
Label2.Visible = True
DoEvents
TextBox2.SetFocus
End If
End Sub
DoEvents veranlasst Excel, noch nicht fertiggestellte Aufgaben zu erledigen, in diesem Fall das Sichtbarmachen von Textbox2.
Gruß Matthias
Es funktioniert leider nicht!
Oliver
Hi Matthias,
danke Dir für Deine Antwort. Sorry, aber es funktionierrt nicht. Wenn ich TextBox1 fülle, die Returntaste betätige, wird TextBox2 eingeblendet, aber der Coursor bleibt in TextBox1 und markiert mir immer noch die vorher eingegebene Eingabe in TextBox1. Erst wenn ich dann erneut die Entertaste betätige, springt der Coursor in TextBox2. Das hätte ich aber lieber, wenn beim ersten Betätigen der Returntaste der Coursor in die gerade eingeblendete TextBox springt. Hast Du noch eine Idee, woran das liegen könnte?
Gruß,
Oliver
Anzeige
AW: Es funktioniert leider nicht!
07.01.2005 16:08:06
Matthias
Hallo Oliver,
seltsam...
vorhin hat es bei mir funktioniert, jetzt aber auch nicht mehr...
bin leider ratlos.
Gruß Matthias
Hat noch jemand anderes eine Idee?
Oliver
Hi Matthias,
schade, dass Dir im Moment nichts mehr einfällt. Eventuell hast Du ja später oder jemand anders eine Idee und kann hier weiterhelfen. Danke Dir auf jeden Fall noch mal für Deine Hilfe, sie hat mich ja immerhin schon ein bisschen weitergebracht. Für den Rest hoffe ich gibt es sicherlich auch noch eine Lösung.
MfG,
Oliver
Habe eine zuriedenstellende Lösung erarbeitet!
Oliver
Moin,
ich habe jetzt für mich eine Lösung gefunden, die ich hier gerne mitteilen möchte. Da es scheinbar Probleme gibt, wenn eine textBox ausgeblendet ist, gleich nach dem Einblenden den Focus auf die eingeblendete TextBox zu setzen habe ich anstelle dass ich die TextBoxen ausblende, die Hintergrundfarbe und die Schriftfarbe geändert. Also wenn die UserForm geöffnet wird, erhalten alle Label- und Textfelder die Farbe der UserForm. Sie sind somit von der optik her ausgeblendet, aber dennoch da. Wenn nun das Kriterium erfüllt ist, ändere ich die Farbe des nächsten Label- und Textfeldes. Somit kann der Focus auf das nächste Textfeld ohne Probleme übergeben werden. Der Code für z.B. TextBox1 sieht somit nun folgendermaßen aus:

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If Freigabe_TextBox1 = 1 Then
If Not IsNumeric(Me.TextBox1.Value) Then
MsgBox "Die Eingabe muss nummerisch sein!"
Me.TextBox1 = ""
Cancel = True
Else
With TextBox2
.BackColor = &H80000005
.SpecialEffect = fmSpecialEffectSunken
End With
Label2.ForeColor = &H80000008
TextBox2.SetFocus
End If
End If
Freigabe_TextBox1 = 0
End Sub

Die If Abfrage nach der Variablen Freigabe_TextBox1 mache ich, da ich in der UserForm einen Buttton habe, mit dem ich die UserForm ohne die Daten zu übernehmen beenden kann. Das funktionierte ohne die Abfrage nicht, da immer die MsgBox mit der Fehlermeldung erschien. Mit dieser Abfrage erscheint sie nicht mehr.
Sollte doch noch jemand eine Lösung für mein obiges Problem haben, dann bitte hier reinschreiben, damit ich das dann in meine userForm übernehmen kann, da mir eine Lösung mit ausblenden lieber wäre.
Schönes Wochenende,
Oliver
Anzeige

35 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige