Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Focus auf Textbox setzen

Focus auf Textbox setzen
22.11.2006 16:35:35
Michael
Hallo allerseits
ich habe schon hier im Forum und Archiv gesucht dort wir auf eine Datei verwiesen die es nicht mehr gibt :-( Focus_wieder_auf_Textbox.xls
Also mein Problem:
Ich habe ein Formular mit mehreren Textfeldern.
Nach der Eingabe in Textbox1 wird eine Prüfung ausgeführt und bei einem Fehler soll der Cursor dann wieder in Textbox1 stehen. Doch der Befehl textbox1.setfocus
führt nicht zum Erfolg, der Cursor steht immer in Textbox2.
Was ist denn daran falsch?
Gruß
Michael
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Focus auf Textbox setzen
ransi
HAllo Michael
Was ist denn daran falsch?

Ich tippe mal der Fehler legt irgendwo in Zeile 12 bis Zeile 17 von deinem Programmcode.
Musst du ändern, dann gehts bestimmt.
ransi
AW: Focus auf Textbox setzen
23.11.2006 11:46:02
Michael
uihhh das ist ja eine klasse Antwort, wenn es mehr von solchen geben würde, könnte man das Forum ja gleich schließen:-(
Aber wenn Dir der Code weiterhilft?
nach der Eingabe in Textbox1 (bei einer Fehleingabe) läuft der Code auf diese Fehlerroutine.
fehler:
tb_Nicht_gefunden.Text = "Sie haben keine Zahl eingegeben"
tb_Nicht_gefunden.Visible = True
TextBox1 = Empty
TextBox1.SetFocus
laut meiner Logik sollte der Cursor danach wieder in Textbox1 stehen, tut er aber nicht, steht in der Textbox2
Wo ist der Fehler? ich kann da keine sehen?
Danke für sinnvolle Antworten
Michael
Anzeige
AW: Focus auf Textbox setzen
23.11.2006 14:43:52
Herbert
Hi,
eine Antwort kann immer nur so gut wie die Frage sein.
Aus deinem Code geht nicht hervor, in welchen Ereignis der Code steht.
mfg Herbert
AW: Focus auf Textbox setzen
23.11.2006 15:41:46
Michael
okay,
das stimmt :-(
Das Feld ist auf einem UserForm und das Ereignis ist

Sub TextBox1_AfterUpdate()
fehler:
tb_Nicht_gefunden.Text = "Sie haben keine Zahl eingegeben"
tb_Nicht_gefunden.Visible = True
TextBox1 = Empty
TextBox1.SetFocus
End Sub

Gruß
Michael
Anzeige
AW: Focus auf Textbox setzen
25.11.2006 23:27:49
Herbert
Hi,
ein control kann niemals den Focus auf sich selbst setzen. Denk dir eine andere Taktik aus.
mfg Herbert
AW: Focus auf Textbox setzen
26.11.2006 09:36:51
Michael
okay,
das ist aber Mist. Wie mach ichs denn? mhmhmh
Gruß Michael
Danke für den Hinweis
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Focus auf Textbox setzen in Excel VBA


Schritt-für-Schritt-Anleitung

  1. Öffne das VBA-Editor in Excel (Alt + F11).

  2. Füge ein UserForm hinzu, falls noch nicht geschehen. Rechtsklicke im Projekt-Explorer und wähle "Einfügen" > "UserForm".

  3. Füge die TextBoxen hinzu. Ziehe die TextBox1 und eine zweite TextBox (Textbox2) auf das UserForm.

  4. Gehe zu den Eigenschaften der TextBox und benenne sie entsprechend (z.B. TextBox1, TextBox2).

  5. Füge folgenden VBA-Code ein:

    Private Sub TextBox1_AfterUpdate()
       If Not IsNumeric(TextBox1.Value) Then
           tb_Nicht_gefunden.Text = "Sie haben keine Zahl eingegeben"
           tb_Nicht_gefunden.Visible = True
           TextBox1.Value = Empty
           TextBox1.SetFocus ' Cursor zurück in TextBox1 setzen
       End If
    End Sub
  6. Teste das Formular im VBA-Editor, indem du auf "Run" klickst.


Häufige Fehler und Lösungen

  • Cursor bleibt nicht in TextBox1: Stelle sicher, dass der Code im richtigen Ereignis platziert ist. Der AfterUpdate-Event kann manchmal problematisch sein. Versuche stattdessen den LostFocus-Event.

  • Textbox1.SetFocus funktioniert nicht: Ein Control kann manchmal den Fokus nicht auf sich selbst setzen, wenn der Code nicht korrekt ausgeführt wird. Überprüfe, ob der Code an der richtigen Stelle ausgeführt wird.

  • Textbox sichtbar machen: Falls tb_Nicht_gefunden.Visible = True nicht funktioniert, stelle sicher, dass das Textfeld auch im UserForm vorhanden ist und die Sichtbarkeit korrekt eingestellt ist.


Alternative Methoden

  • Verwende den Activate-Befehl: Eine andere Möglichkeit, um den Fokus zu setzen, ist der Activate-Befehl. Du kannst den Fokus auf ein Textfeld setzen, indem du Folgendes verwendest:

    TextBox1.Activate
  • Setze den Fokus in einer anderen Prozedur: Manchmal hilft es, den Fokus in einer separaten Prozedur zu setzen. Du könntest eine Methode erstellen, die nur für das Setzen des Fokus verantwortlich ist.


Praktische Beispiele

Hier ist ein einfaches Beispiel, das zeigt, wie du den Fokus auf eine TextBox setzen kannst, wenn eine Eingabe fehlerhaft ist:

Private Sub TextBox1_AfterUpdate()
    If Not IsNumeric(TextBox1.Value) Then
        MsgBox "Bitte eine Zahl eingeben."
        TextBox1.SetFocus
    End If
End Sub

In diesem Beispiel wird bei einer ungültigen Eingabe eine Nachricht angezeigt, und der Fokus wird sofort auf TextBox1 gesetzt.


Tipps für Profis

  • Verwende DoEvents: Wenn du Probleme hast, den Fokus korrekt zu setzen, füge DoEvents vor dem SetFocus-Befehl hinzu, um sicherzustellen, dass alle anderen Ereignisse abgeschlossen sind, bevor du den Fokus setzt.

    DoEvents
    TextBox1.SetFocus
  • Verwende die TabIndex-Eigenschaft: Stelle sicher, dass die TabIndex-Eigenschaft deiner TextBoxen korrekt eingestellt ist, um die Reihenfolge des Fokus zu steuern.


FAQ: Häufige Fragen

1. Warum funktioniert TextBox1.SetFocus nicht?
Ein Control kann den Fokus nicht auf sich selbst setzen, während ein anderer Prozess läuft. Stelle sicher, dass du den Fokus im richtigen Ereignis setzt.

2. Welche Excel-Version benötige ich?
Die oben genannten Methoden funktionieren in Excel ab Version 2007 und später, solange du VBA nutzen kannst.

3. Was ist der Unterschied zwischen SetFocus und Activate?
SetFocus setzt den Fokus auf ein Steuerelement, während Activate das Steuerelement aktiviert und den Fokus auf das gesamte Fenster setzt.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige