Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
572to576
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
572to576
572to576
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
In Userform-Textbox scrollen
22.02.2005 13:45:14
Roland
Hallo zusammen,
gegeben ist eine UF mit einem CommandButton und einer Textbox (multiline=true).
Mit folgendem Code ist es möglich, einen längeren mehrzeiligen Text aus Zelle A1 zeilenweise son in die Textbox einzulesen, dass er scrollt:
Option Explicit
Dim i As Integer

Private Sub CommandButton1_Click()
With TextBox1
.Visible = True
.Text = Cells(1, 1)
.SetFocus
i = 0
Do While i < .LineCount
.CurLine = i
Application.Wait Now + TimeSerial(0, 0, 1)
i = i + 1
Me.Repaint
Loop
.Text = ""
.Visible = False
End With
End Sub


Private Sub UserForm_Initialize()
TextBox1.Visible = False
End Sub

Das Ganze soll so etwas wie ein Abspann werden. Was noch nicht funktioniert ist folgendes:
- Wie schaffe ich es, den Code jederzeit zu unterbrechen auch ohne dass die Schleife ganz durch ist?
- Wie schaffe ich es, die Zeilen einigermaßen "ruckelfrei" einlesen zu lassen?
Nach Möglichkeit soll das mit Excel-Bordmitteln zu machen sein, Verweise auf Powerpoint etc. kommen nicht in Betracht. Von etwaigen API-Ansätzen habe ich allerdings keine Ahnung :-)
Vielen Dank im voraus von
Roland Hochhäuser

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: In Userform-Textbox scrollen
Bert
Verschieb einfach die Top-Position kontinuierlich.
Bert
AW: In Userform-Textbox scrollen
23.02.2005 12:07:53
Roland
Hallo Bert,
ich habe es jetzt so gemacht:

Private Sub CommandButton1_Click()
Dim i As Integer, j As Long
On Error GoTo errorhandler
With TextBox1
.Visible = True
.Text = Cells(1, 1)
.SetFocus
i = 1
Do While i < .LineCount
.Top = 50
.CurLine = i
For j = 0 To 100000
If j Mod 1000 = 0 Then .Top = .Top - (j / 200000)
DoEvents
Next
i = i + 1
Loop
.Text = ""
.Visible = False
End With
errorhandler:
Unload Me
End Sub

Nachteil: die Scrollgeschwindigkeit hängt von der Leistungsfähigkeit des ausführenden Computers ab. Kennst du vielleicht einen "maschinenunabhängigen" Ansatz?
Grüße aus dem (wieder) verschneiten Berlin
Roland Hochhäuser
Anzeige
AW: In Userform-Textbox scrollen
Bert
Verwende einfach die API-Funktion Sleep(in Millisekunden).
Bert
AW: In Userform-Textbox scrollen
23.02.2005 16:00:06
Roland
Hallo Bert,
Vielen Dank für deinen Tip, er war wirklich hilfreich. Habe ich noch "Kredit" für eine letzte Frage: wie bekomme ich den Cursor weg oder unsichtbar? Hier der bisherige Code:
Option Explicit
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Private Sub CommandButton1_Click()
Dim i As Integer, j As Long
On Error GoTo errorhandler
With TextBox1
.Visible = True
.Text = Cells(1, 1)
.SetFocus
i = 1
Do While i < .LineCount
.Top = 50
.CurLine = i
For j = 0 To 100
.Top = .Top - (j / 300)
Sleep 10
DoEvents
Next
i = i + 1
Loop
.Text = ""
.Visible = False
End With
errorhandler:
Unload Me
End Sub

Wenn das noch hinzubekommen wäre, hätte ich den perfekten "Abspann". Deshalb bitte ich dich erneut um einen Tip :-)
Gruß Roland
Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige