Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1148to1152
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
Textbox Cusor immer in die letzte Zeile setzen
Horst
Hey!
Ich habe eine Textbox (Multiline)
Die protokolliert mir die Ergebnisse verschiedener Makros.
Nun möchte ich aber das der Cursor immer automatisch an die letzte Zeile gesetzt wird.
Um immer gleich die aktuellste Textausgabe mitlesen zu können.
Aber wie erreiche ich das:
Hier das Makro da mir den Text Zusammenstellt.
--------------------------------------------------

Public Sub changeAndConcateTextAndRepaint(displayText As String)
Ueberschrif1.Caption = "Fortschritt Tabelle " & ActiveSheet.Name & " " & Time
TextBoxForschritt.Text = TextBoxForschritt.Text & vbCr & displayText
TextBoxForschritt.SelStart = TextBoxForschritt.TextLength
Repaint
TextBoxForschritt.SelStart = TextBoxForschritt.TextLength
End Sub

------------------------------------------------------
Der Cursor bleibt irgendwie immer in mittendrin stehen und ich muss scrollen.
Wer kann hier helfen
Gruß Horst
AW: Textbox Cusor immer in die letzte Zeile setzen
31.03.2010 09:59:49
xr8k2
Hallo Horst,
setze mal noch den Focus auf deine Textbox:
'...
TextBoxForschritt.setfocus
'...
Gruß,
xr8k2
AW: Textbox Cusor immer in die letzte Zeile setzen
31.03.2010 10:16:35
Horst
Hey!
habe ich gemacht.
-----------------------------------
Ueberschrif1.Caption = "Fortschritt Tabelle " & ActiveSheet.Name & " " & Time
TextBoxForschritt.Text = TextBoxForschritt.Text & vbCr & displayText
TextBoxForschritt.SetFocus
'TextBoxForschritt.CurLine = TextBoxForschritt.LineCount
TextBoxForschritt.SelStart = TextBoxForschritt.TextLength
Repaint
TextBoxForschritt.SelStart = TextBoxForschritt.TextLength
TextBoxForschritt.SetFocus
------------------------------------
Macht keinen Unterschied, kann da vielleicht an den vbcrs liegen?
Horst
Anzeige
MsgBox lässt Textbox Cusor einfrieren
31.03.2010 10:32:55
Horst
Hey!
Also das mit dem SetFocus war wohl doch richtig.
Es bleibt auch in der letzten Zeile.
Wenn aber eine MsgBox aufpoppt (also dazischen kommt) bleibt der Cusor in der Textbox an der Stelle wo er vor der dem auslösen der MsgBox war. Und bewegt sich nicht mehr weiter.
Jemand ne Idee?
Horst
nicht nachvollziehbar owT
31.03.2010 10:59:02
Rudi
AW: MsgBox lässt Textbox Cusor einfrieren
31.03.2010 11:06:17
xr8k2
Hallo Horst,
also ich hab das jetzt mal mit einem Aufruf der Prozedur in einer einfachen Schleife probiert ... in meinem Excel2003 funktionierts (auch mit dazwischengeschalteten MsgBoxes).
Wie rufst du denn denn das Makro auf, ist das eine Textbox in einer Userform? Wenn ja, wird diese gebunden oder ungebunden angezeigt? Und warum hast du die Zeile
TextBoxForschritt.SelStart = TextBoxForschritt.TextLength
doppelt?
Gruß,
xr8k2
Anzeige
AW: MsgBox lässt Textbox Cusor einfrieren
31.03.2010 11:25:32
Horst
Hey !
ja das ist eine Textbox in einer userForm
Was bedeuted gebunden oder nicht gebunden? (Modal?)
Wenn ja zeige ich diese Modal an.
Ich rufe
TextBoxForschritt.SelStart = TextBoxForschritt.TextLength
zweimal auf, aus Verzweiflung!
Vielleicht vergisst er bei Repaint ja was, dachte ich.
Was mir noch aufgefallen ist:
TextBoxForschritt.SelStart = TextBoxForschritt.TextLength
Das SelStart bliebt auch nach der Zuweisung auf die Testlänge auf den alten Stand, und wir nicht aktualisiert auf die Textlänge . Ebenfalls erst nach der MsgBox.
Wat kann das den sein?
Anzeige
AW: MsgBox lässt Textbox Cusor einfrieren
31.03.2010 11:26:50
xr8k2
Hallo Horst, ich nochmal ...
genau das wird das Problem sein ... bei ungebundenen Úserforms tritt das Problem auf, das die Textbox den Fokus nicht wieder zurück erhält.
Wie man´s lösen kann weiß ich aber grad eben leider auch nicht (außer eben die Userform gebunden darzustellen) :-(
Gruß,
xr8k2
AW: MsgBox lässt Textbox Cusor einfrieren
31.03.2010 11:38:02
Horst
Wie stelle ich diese denn gebunden (ungebunden) dar?
Horst
ShowModal=True/ False owT
31.03.2010 11:39:57
Rudi
AW: MsgBox lässt Textbox Cusor einfrieren
31.03.2010 11:44:17
Horst
Hallo !
habe ich getan,
Ergebnis ist das selbe ob ShowModal True oder False.
mmh...
Horst
mmh...
31.03.2010 11:49:01
Rudi
Hallo,
du solltest die Mappe mal hochladen.
Gruß
Rudi
AW: mmh...
31.03.2010 11:51:16
xr8k2
Hallo Horst ... aber wenn du ja schreibst deine UF ist schon modal ?!
Hab mal noch ein bissl weiterprobiert ... so funktionierts nun bei mir gebunden und ungebunden
(den Senf mit TextBoxForschritt.SelStart = TextBoxForschritt.TextLength kannst du auch getrost noch weglassen):
Public Sub changeAndConcateTextAndRepaint(displayText As String)
Ueberschrif1.Caption = "Fortschritt Tabelle " & ActiveSheet.Name & " " & Time
TextBoxForschritt.Text = TextBoxForschritt.Text & vbCr & displayText
TextBoxForschritt.SetFocus
Repaint
End Sub
'Wichtig: Eigenschaft .Hideselection der Textbox muss =false sein!
Gruß,
xr8k2
PS: ... damit getestet:
Sub TBfuellen()
Dim wertx As Long
wertx = 1
Do
changeAndConcateTextAndRepaint ("Textzeile " & wertx)
wertx = wertx + 1
If wertx = 10 Then MsgBox "Hallo Zeile"
Application.Wait (Now + TimeSerial(0, 0, 1))
Loop Until wertx >= 50
End Sub

Anzeige
AW: mmh...
31.03.2010 12:21:44
Horst
Hey
Danke, vielen Dank!
Das war es, dass ist die Lösung !!!!!!!!!!!
Horst
mmh... ändert mal die Reihenfolge!
31.03.2010 12:50:06
Renee
Hi zusammen,
Das ist wohl der Super-Overkill, für eine so simple Sache ein Application.Wait einzufügen!!
Public Sub changeAndConcateTextAndRepaint(displayText As String)
Ueberschrif1.Caption = "Fortschritt Tabelle " & ActiveSheet.Name & " " & Time
TextBoxForschritt.Text = TextBoxForschritt.Text & vbCr & displayText
TextBoxForschritt.SetFocus
TextBoxForschritt.SelStart = TextBoxForschritt.TextLength
End Sub
GreetZ Renée
AW: mmh... ändert mal die Reihenfolge!
31.03.2010 13:07:18
xr8k2
Tach auch ... Renée,
was hast du denn jetzt noch an der Reihenfolge geändert ?
Und wie schon erwähnt, das
TextBoxForschritt.SelStart = TextBoxForschritt.TextLength
kan mann getrost weglassen, da der Cursor automatisch ans ende der TB gesetzt wird.
Hey ... und was hast du gegen mein Application.Wait ...
steht doch nur in der TestProzedur ... weil meine Augen sind nicht mehr ganz so schnell ;-)
Gruß,
xr8k2
Anzeige
AW: mmh... ändert mal die Reihenfolge!
31.03.2010 13:10:53
Renee
Hi xr8k2,
.SetFocus muss vor .SelStart ;-)
Kein Modal/Nonmodal
Kein Repaint
Kein Wait
Kein gar nichts!
That's all folks!
GreetZ Renée
AW: mmh... ändert mal die Reihenfolge!
31.03.2010 13:17:00
xr8k2
... und eben das läuft ohne.Repaint unter vbmodeless nicht sauber ... zumindest in meinem Excel2003.
Die Aktualisierung der TB bricht irgendwann ab!
Gruß,
xr8k2
AW: mmh... ändert mal die Reihenfolge!
01.04.2010 07:38:16
Horst
Hey alle zusammen!
xr8k2 hatte die Lösung für meine Problem. Da mit Application wait war nur zum testen, und ist von mir auch so verstanden worden.
Danke allen zusammen!
Horst
AW: mmh...
31.03.2010 12:07:51
Horst
Die ganze Mappe wäre glaube ich zu viel, ungepack 15MB. Die Anwendung besteht dann auch aus drei Mappen. Wäre dann auch zu verwirrend.
Müsste ich zu Testzwecken erst noch umbauen.
Ich habe mal die UserForm exportiert, vielleicht kann man ja schon da sehen was ich falsch gemacht habe.
https://www.herber.de/bbs/user/68896.zip
Danke
Horst
Anzeige

320 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige