Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Positionierung der Schreibmarke innerhalb einer Textbox
#1
Hallo liebe Forumteilnehmer und ein gesundes und frohes neues Excel-Jahr.
Mein Problem heute:
Ich habe in einem Dialogfeld eine Multiline Textbox.
In dieser Textbox steht zunächst normaler Text. Mit dem nächsten Enter-Ereignis soll hinter dem bisherigen Text eine neue Zeile mit einem Zeitstempel erzeugt werden.
Das ist auch soweit kein Problem,

Private Sub txtBem_Enter()
If Len(txtBem) > 0 Then txtBem.Value = txtBem.Value & Chr(10) & Now & " : "
End Sub

Wie kann ich aber erreichen, dass die Schreibmarke nun automatisch hinter den „:“ gesetzt wird. Er bleibt nämlich an der Stelle auf die (versehentlich??) geklickt wurde. Gibt es eine Positionierungsmöglichkeit??

Danke im voraus und liebe Grüße aus Detmold
W. Schulze

windows 10, office 14
Antworten Top
#2
Hallo W. Schulze,

teste mal so:


Code:
Private Sub txtBem_Enter()
If Len(txtBem) > 0 Then
 txtBem.Value = txtBem.Value & Chr(10) & Now & " : "
 txtBem.SelStart = txtBem.SelLength
End If
End Sub
Gruß Atilla
Antworten Top
#3
Hallo atilla, danke für die schnelle Antwort, funktioniert aber leider nicht, auch nicht mit (versuchsweise) numerischer Long-Angabe.
In der Hilfe für selstart steht, dass es nur geht wenn das Steuerelement nicht den Fokus hat. Durch das Klicken hat es den doch oder?
Gruß
Antworten Top
#4
Hallo,

dann nutz ein anderes Ereignis der Teytbox zum Positioniueren.

z.B. so:


Code:
Private Sub txtBem_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
 txtBem.SelStart = Len(txtBem)
End Sub
Gruß Atilla
Antworten Top
#5
Hallo W.
Zitat:Er bleibt nämlich an der Stelle auf die (versehentlich??) geklickt wurde. Gibt es eine Positionierungsmöglichkeit??
Nur meine Meinung:
Ein UserForm wird erstellt, um Massendaten bequem in eine Tabelle einzutragen oder Infos aus nicht zugänglichen Tabellen zu überführen.
Wer zum Ausfüllen des Userforms die Maus zur Hand nimmt, hat das Prinzip schlicht nicht verstanden!
Hier bewegt sich der Sachbearbeiter ausschließlich mittels Tastatur (Sprung per Tab)!
Ja, das betrifft auch Checkboxes, OptionButtons und sogar Register u.ä.
Man kann .EnterFieldBehavior der TextBox auf 1- fmEnterFieldBehaviorRecallSelection stellen und dann TextBox1.SelStart = Len(TextBox1) setzen, dann geht es flott und zuverlässig.

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antworten Top
#6
Hallo Ralf,

Zitat:Wer zum Ausfüllen des Userforms die Maus zur Hand nimmt, hat das Prinzip schlicht nicht verstanden!

Wenn Du das allgemein meinst, möchte ich Dir aber vehement widersprechen. Ich bin da eher der Ansicht, dass jedes Zeichen auf der Tastatur eine Fehlerquelle zuviel ist. Sobald man dem User Daten zur Auswahl anbieten kann, sollte man das tun.

So, und nun der Kompromissvorschlag. Eine ausgewogene Kombination aus beiden Extremen ist wohl die beste Variante :100:
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#7
Hallo André!
Zitat:Wenn Du das allgemein meinst
Nö, ich schrieb ja "Nur meine Meinung" :19:
Unbestritten dürfte aber sein, dass jedes Entfernen der Finger von der Tastatur Zeitverschwendung ist.
In den Anwendungen, die ich entwickelt habe, habe ich immer Wert darauf gelegt, die richtige Aktivierreihenfolge im Userform festzulegen, so dass der "Power-User" loslegen kann.

Du schreibst davon, Daten zur Auswahl anzubieten.
Klar sollte man z.B. Dropdowns anbieten.
Wenn ich allerdings sehe, dass ein User den Dropdown klickt und im Dropdown scrollt, anstatt das EnterFieldBehavior und den MatchEntry auszunutzen …

Im übrigen bin ich auch ein Freund davon, den Accelerator bei den jeweiligen Elementen zu nutzen, findet man heute kaum noch in selbst erstellten Anwendungen.

Ändert natürlich nichts an der Tatsache, dass die Mausbenutzung weiterhin erlaubt ist. Blush
Ist ja auch kein Kompromiss, sondern sinnvoll, beides zu berücksichtigen.

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antworten Top
#8
(11.01.2016, 19:52)RPP63 schrieb: Hallo W.
Nur meine Meinung:
Ein UserForm wird erstellt, um Massendaten bequem in eine Tabelle einzutragen oder Infos aus nicht zugänglichen Tabellen zu überführen.
Wer zum Ausfüllen des Userforms die Maus zur Hand nimmt, hat das Prinzip schlicht nicht verstanden!
Hier bewegt sich der Sachbearbeiter ausschließlich mittels Tastatur (Sprung per Tab)!
Ja, das betrifft auch Checkboxes, OptionButtons und sogar Register u.ä.
Man kann .EnterFieldBehavior der TextBox auf 1- fmEnterFieldBehaviorRecallSelection stellen und dann TextBox1.SelStart = Len(TextBox1) setzen, dann geht es flott und zuverlässig.

Gruß Ralf

Hallo Ralf, 
danke für den Hinweis, ja, mit der Tabtaste und den o. g. Einstellungen klappt das so wie es soll. 
Gruß Wolfgang
Antworten Top
#9
(11.01.2016, 16:49)atilla schrieb: Hallo,

dann nutz ein anderes Ereignis der Teytbox zum Positioniueren.

z.B. so:


Code:
Private Sub txtBem_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
 txtBem.SelStart = Len(txtBem)
End Sub

Hallo attila, 
ich habe den Vorschlag von RPP63 verwendet. Alles ok. Trotzdem danke nochmal.
Gruß Wolfgang
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste