Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: cursor in textbox(UF)

cursor in textbox(UF)
stefan
Hallo meine Guten
Seit langem brauche ich mal weider eure Hilfe.
Nach langer, aber nicht zufriedestellender Suche über Gooogle und im Forumsarchiv, komme ich jetzt auf euch zurück.
Ich habe eine Userform in der sich eine Textbox befindet.
Diese fülle ich beim Start der UF mit einem Text, welcher 10 Zeichen lang ist.
Nach dem öffnen soll der Cursor hinter dem 10. Zeichen stehen und blinken.
SetFocus habe ich schon gesetzt.
Klicke ich in die TB steht der Cursor gleich an 10ter Stelle.
Das soll aber ohne mein Zutun geschehen.
Danke. Gruß, Stefan
Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
textbox1.selstart=10 owT
10.12.2009 16:43:06
Rudi
AW: cursor in textbox(UF)
10.12.2009 16:43:59
Hajo_Zi
Hallo Stefan,
TextBox2 = "0123456789"
TextBox2.SetFocus

AW: cursor in textbox(UF)
10.12.2009 17:40:06
stefan
Hallo
Danke für die schnellen Antworten.
Habe das gleich mal in einer neu erstellten Datei getestet. Lief super.
Mein Problem ist, es läuft nicht in meiner Datei.
Hänge sie euch mal an. Leicht gekürzt.
Den Rest habe ich gelöscht, da dies funktioniert.(Search Button)
https://www.herber.de/bbs/user/66492.xls
Kann es auch mit der Aktivierreihenfolge der UF zusammenhängen?
Stefan
Anzeige
AW: cursor in textbox(UF)
10.12.2009 17:46:31
Hajo_Zi
Hallo Sefan,
Private Sub UserForm_Activate()
TextBox1.Text = "1 305 630 "
TextBox1.SetFocus
'TextBox1.SelStart = 10
End Sub

Gruß Hajo
AW: cursor in textbox(UF)
10.12.2009 18:09:26
stefan
Hallo
Problem gelöst. Hajo hat den Fehler gefunden.
Ich hatte geschrieben:
Private Sub UserForm_Initialize()
TextBox1.Text = "1 305 630 "
TextBox1.SetFocus
TextBox1.SelStart = 10
End Sub
Initialize war dann wohl falsch. Activate wäre richtig gewesen.
Wieso? Was ist der Unterschied, Hajo?
Stefan
Anzeige
AW: cursor in textbox(UF)
10.12.2009 18:13:16
Hajo_Zi
Hallo Stefan,
Ini.. wird nur einmal in der Sitzung ausgeführt, Activate bei jedem Start de Userform. Das ist mal der grundsätzliche Unterrschied.
Gruß Hajo
AW: cursor in textbox(UF)
10.12.2009 18:19:22
stefan
Vielen Dank....
AW: cursor in textbox(UF)
10.12.2009 18:30:09
Beverly
Hi Stefan,
als Ergänzung zu Hajos Beitrag: das Initialize-Ereignis wird grundsätzlich vor dem Activate-Ereignis ausgeführt und da das UserForm in diesem Moment noch nicht angezeigt wird, wirkt der Befehl SetFocus nicht.
Ich persönlich verwende das Initialize-Ereignis z.B. dann, wenn eine große Datenmenge in das UserForm eingelesen werden muss - wenn man dies beim Activate ausführt, würde es jedes Mal sehr lange dauern bis das UserForm gestartet wird. Außerdem verwendet man das Initialize-Ereignis, wenn man mit Klassenprogrammierung im UserForm arbeitet, weil die Steuerelemente in den Klassen bereits vor dem Starten des UserForms erzeugt werden müssen.


Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Cursor in der Textbox einer Userform positionieren


Schritt-für-Schritt-Anleitung

Um den Cursor in einer Textbox einer Userform (Excel UF) an eine bestimmte Position zu setzen, folge diesen Schritten:

  1. Öffne den Visual Basic for Applications (VBA) Editor in Excel.

  2. Erstelle eine neue Userform und füge eine Textbox hinzu.

  3. Füge den folgenden Code in das Codefenster der Userform ein:

    Private Sub UserForm_Activate()
       TextBox1.Text = "1 305 630 "
       TextBox1.SetFocus
       TextBox1.SelStart = 10  ' Cursor hinter dem 10. Zeichen positionieren
    End Sub
  4. Stelle sicher, dass die Userform aktiviert wird, wenn Du sie öffnest.

  5. Teste die Userform, um sicherzustellen, dass der Cursor beim Öffnen der Userform korrekt positioniert ist.


Häufige Fehler und Lösungen

  • Fehler: Der Cursor erscheint nicht an der gewünschten Stelle.

    • Lösung: Stelle sicher, dass Du das UserForm_Activate Ereignis verwendest, nicht UserForm_Initialize. Das Activate-Ereignis wird jedes Mal ausgeführt, wenn das Userform aktiviert wird, während Initialize nur einmal pro Sitzung läuft, bevor das Userform angezeigt wird.
  • Fehler: Der Text wird nicht korrekt in die Textbox eingefügt.

    • Lösung: Überprüfe den Text, der in die Textbox eingefügt wird, und stelle sicher, dass die Textbox korrekt benannt ist.

Alternative Methoden

Es gibt verschiedene Möglichkeiten, den Cursor in einer Textbox zu positionieren:

  • Verwendung von UserForm_Initialize: Wenn Du den Cursor gleich beim Start des Userforms setzen möchtest, kannst Du auch das UserForm_Initialize-Ereignis verwenden. Beachte jedoch, dass der Cursor in diesem Fall möglicherweise nicht richtig gesetzt wird, da das Userform noch nicht sichtbar ist.

  • Mit einem Button: Du kannst auch einen Button hinzufügen, der beim Klicken den Fokus auf die Textbox setzt und den Cursor an die gewünschte Stelle bewegt. Beispiel:

    Private Sub CommandButton1_Click()
       TextBox1.SetFocus
       TextBox1.SelStart = 10
    End Sub

Praktische Beispiele

Hier sind einige praxisnahe Beispiele, wie Du den Cursor in einer Textbox positionieren kannst:

  1. Beispiel für die Eingabe von Telefonnummern:

    Private Sub UserForm_Activate()
       TextBox1.Text = "0123456789"
       TextBox1.SetFocus
       TextBox1.SelStart = 5  ' Cursor nach der 5. Ziffer positionieren
    End Sub
  2. Beispiel für die Eingabe von Postleitzahlen:

    Private Sub UserForm_Activate()
       TextBox1.Text = "12345"
       TextBox1.SetFocus
       TextBox1.SelStart = 3  ' Cursor nach der 3. Ziffer positionieren
    End Sub

Tipps für Profis

  • Verwende SelLength: Du kannst die Länge der Auswahl in der Textbox mit TextBox1.SelLength festlegen, um einen bestimmten Text hervorzuheben, wenn das Userform geöffnet wird.

  • Ereignisprozeduren nutzen: Nutze die verschiedenen Ereignisprozeduren von Textboxen, um unterschiedliche Aktionen durchzuführen, z.B. Change, Exit oder KeyPress.

  • Debugging: Verwende Debugging-Tools im VBA-Editor, um Probleme mit der Cursorpositionierung in der Textbox schnell zu identifizieren.


FAQ: Häufige Fragen

1. Warum funktioniert UserForm_Initialize nicht, um den Cursor zu setzen?
Das Initialize-Ereignis wird ausgeführt, bevor die Userform angezeigt wird. Daher kann der Fokus nicht korrekt gesetzt werden, was dazu führt, dass der Cursor nicht an der gewünschten Stelle erscheint.

2. Wie kann ich den Cursor automatisch beim Öffnen der Userform setzen?
Verwende das UserForm_Activate-Ereignis, um sicherzustellen, dass der Cursor an der gewünschten Position gesetzt wird, sobald die Userform aktiv ist.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige