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

Forumthread: Textbox: Cursor-Position

Textbox: Cursor-Position
04.05.2009 12:43:13
Angela
Hallo,
ich habe eine Textbox mit einem Default-Wert von 00:15:00, mit der ich offensichtlich eine Zeit eingeben will. Wenn ich auf die Textbox klicke, soll der Cursor automatisch zur 4. Position springen. Also habe ich folgenden Code probiert:

Private Sub MinVarInput_Enter()
MinVarInput.SelStart = 3
End Sub


Allerdings funktioniert das nicht. Wenn ich das gleiche mit


Private Sub MinVarInput_Change()
MinVarInput.SelStart = 3
End Sub


mache, geht's wunderbar, aber das nützt mir nichts. Kann mir jemand erklären, was an dem Code falsch ist und wie ich den Cursor nun verschieben kann?
Danke im voraus,
Angela

Anzeige

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Private Sub TextBox1_GotFocus()
04.05.2009 12:49:25
Matthias
Hallo

Private Sub TextBox1_GotFocus()
TextBox1.SelStart = 3
End Sub


Gruß Matthias

AW: GotFocus nur bei Steuerelement-Texboxen
04.05.2009 13:28:22
Daniel
bei Userform-Textboxen gibt es dieses Event nicht, dort heißt es eben ENTER.
Gruß, Daniel
Ich habe nichts von einem Userform geschrieben. oT
04.05.2009 13:44:31
einem
Anzeige
AW: aber auch nichts von Steuerelmenten oT
04.05.2009 14:00:16
Steuerelmenten
muß ich ja auch nicht. Willst Du nur streiten? kwT
04.05.2009 14:16:00
Matthias
AW: nein, nur die Qualität deiner Anwort
04.05.2009 15:34:46
Daniel
verbessern.
Gruß, Daniel
Anzeige
und die Qualität Deiner Anwort ...
04.05.2009 16:27:47
Matthias
Hallo
Zitat von Angela:
Wenn ich auf die Textbox klicke, soll der Cursor automatisch zur 4. Position springen.
Und Du bist der Meinung Deine Antwort war Qualität?
Versuch weiter zu helfen, das ist ja ok so. Aber lass es sein Andere verbessern zu wollen.
Meine Antwort habe ich an Angela geschickt, in die Du Dich eingemischt hast.
Sie kann für sich selbst antworten, ob es hilft oder ob ich es falsch verstanden habe.
In Deiner Antwort an Angela steht übrigens das Wort "Steuerelement" auch nicht, schon bemerkt?
Gruß Matthias
Anzeige
AW: und die Qualität Deiner Anwort ...
04.05.2009 17:12:57
Daniel
Das stimmt natürlich, ich hätte darauf hinweisen müssten, daß meine Antwort nur für Userform-Textboxen geeignet ist.
Allerdings bin ich, grade aufgrund der Verwendung von ENTER davon ausgegangen, daß es sich um solche handelt.
Schließlich wird GOTFOCUS bei Steuerelementtextboxen gar nicht erst angeboten.
Gruß, Daniel
Anzeige
AW: und die Qualität Deiner Anwort ...
04.05.2009 18:29:55
Matthias
Darin siehst Du doch selbst, das es jeder anders interpretiert.
Ich habe das Enter-Ereignis auch gelesen. Und mir ist auch das Enter-Ereignis bekannt
das heißt aber nicht, das der 2. Code (Name_Change ) ebenfalls in einerm Userform steht.
TextBox1_Change gibt es ja schließlich auch in der Textbox der Steiuerelement-Toolbox.
Das alles soll aber nicht heißen, das ich Deine Beiträge nicht schätze.
Ich schätze jeden einzelnen Forenteilnehmer, der hier hilft oder auch nur helfen will.


Man muß aber nicht gleich Qualitätsverbesserer spielen.
Userbild
Anzeige
AW: und die Qualität Deiner Anwort ...
04.05.2009 19:07:16
Daniel
Hi
sorry, das hab ich verwechselt, ich meinte natürlich "Schließlich wird GOTFOCUS bei Userform-Textboxen nicht erst angeboten", so wäre es korrekt gewesen.
Außerdem empfinde ich unsere kleine Diskussion nicht als Streit und ich bin jedem dankbar, der mich auf meine Fehler aufmerksam macht (auch wenn es machmal schwer fällt, dies anzuerkennen ;-)) und mir so hilft, mich weiterzuentwickeln.
Gruß, Daniel
Anzeige
ok ... :o) ___ oT
04.05.2009 19:13:57
Matthias
AW: besser MouseUP-Event verwenden
04.05.2009 13:24:57
Daniel
Hi
ich denke mal, daß wird schwierig, weil der Mauszeiger bei der Positionierung beim Reinklicken Priorität vor der Einstellung aus dem ENTER-Event hat.
besser funktioniert es mit dem MOUSE_UP-Event.
das hätte allerdings den Nachteil, daß die Cursorposition dann nicht mehr nachträglich mit der Maus, sondern nur mit den Tasten aktiviert werden kann.
Ebenfalls würde dieses Event nicht ansprechen, wenn du die Textbox über die Tab-Taste anspringst.
deswegen muss man das etwas aufwendiger programmieren, das hier sollte nach deinen Wünschen funktionieren:

Option Explicit
Dim CursorVerändern As Boolean
Private Sub MinVarInput_Enter()
CursorVerändern = False
MinVarInput.SelStart = 3
End Sub
Private Sub MinVarInput_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As  _
Single, ByVal Y As Single)
If Not CursorVerändern Then
MinVarInput.SelStart = 3
CursorVerändern = True
End If
End Sub


desweitern muss die Eigenschaft der Textbox EnterFieldBehavior auf 1-fmEnterFieldBehaviorRecallSelection gesetzt werden.
Gruß, Daniel

Anzeige
AW: besser MouseUP-Event verwenden
04.05.2009 17:18:39
Angela
Danke, funktioniert super.
Liebe Grüße,
Angela
;
Anzeige
Anzeige

Infobox / Tutorial

Cursor-Position in einer Textbox mit VBA einstellen


Schritt-für-Schritt-Anleitung

Um die Cursor-Position in einer Textbox mit VBA zu setzen, kannst du folgende Schritte befolgen:

  1. Öffne das VBA-Editor-Fenster in Excel (drücke ALT + F11).

  2. Füge ein UserForm hinzu, falls du noch keines hast.

  3. Ziehe eine Textbox auf dein UserForm.

  4. Füge den folgenden Code in den Code-Editor des UserForms ein:

    Private Sub MinVarInput_Enter()
       MinVarInput.SelStart = 3
    End Sub
  5. Um sicherzustellen, dass die Cursor-Position auch funktioniert, wenn der Benutzer die Textbox mit der Maus auswählt, füge zusätzlich diesen Code hinzu:

    Dim CursorVerändern As Boolean
    
    Private Sub MinVarInput_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
       If Not CursorVerändern Then
           MinVarInput.SelStart = 3
           CursorVerändern = True
       End If
    End Sub
  6. Stelle sicher, dass die Eigenschaft EnterFieldBehavior der Textbox auf 1 - fmEnterFieldBehaviorRecallSelection gesetzt ist. Dies sorgt dafür, dass die Cursor-Position nach der Auswahl der Textbox beibehalten wird.


Häufige Fehler und Lösungen

  • Fehler: Cursor springt nicht zur gewünschten Position

    • Lösung: Stelle sicher, dass du das richtige Ereignis verwendest. Das Enter-Ereignis ist für UserForms und das MouseUp-Ereignis kann für Steuerelement-Textboxen verwendet werden.
  • Fehler: Keine Reaktion beim Klicken auf die Textbox

    • Lösung: Überprüfe, ob der Code im richtigen Modul platziert wurde und ob die Textbox korrekt benannt ist.

Alternative Methoden

Eine weitere Methode, um die cursor position zu setzen, ist die Verwendung des Change-Ereignisses. Hier ein Beispiel:

Private Sub MinVarInput_Change()
    MinVarInput.SelStart = 3
End Sub

Beachte jedoch, dass dies nicht immer die gewünschte Funktionalität bietet, da es bei jeder Änderung in der Textbox ausgelöst wird.


Praktische Beispiele

Hier ist ein Beispiel, das zeigt, wie man die Cursor-Position in einer Textbox für die Eingabe von Zeiten einstellen kann. Wenn der Standardwert 00:15:00 ist und du möchtest, dass der Cursor nach dem Klick auf die Textbox auf die 4. Position springt:

  1. Setze den Standardwert in die Textbox.
  2. Verwende den oben genannten Code, um die Cursor-Position zu ändern.

Das Ergebnis wird sein, dass beim Klicken die Eingabe direkt an der Stelle 15:00 beginnen kann, was die Benutzerfreundlichkeit erhöht.


Tipps für Profis

  • Stelle sicher, dass du die richtigen Events wählst, um die Benutzerinteraktion zu optimieren.
  • Experimentiere mit verschiedenen EnterFieldBehavior-Einstellungen, um das Verhalten der Textbox zu beeinflussen.
  • Nutze die vba set cursor position-Technik, um die Benutzererfahrung in deinen Excel-Anwendungen zu verbessern.

FAQ: Häufige Fragen

1. Warum funktioniert das GotFocus-Ereignis nicht in meiner Textbox? Das GotFocus-Ereignis ist nur für Steuerelemente verfügbar, während du in UserForms das Enter-Ereignis verwenden solltest.

2. Was ist der Unterschied zwischen MouseUp und Enter? Das MouseUp-Ereignis wird ausgelöst, wenn der Benutzer die Maus loslässt, während das Enter-Ereignis ausgelöst wird, wenn die Textbox den Fokus erhält. Beide können jedoch zur Einstellung der vba cursor position verwendet werden.

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