In Userform-Textbox scrollen

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
Bild

Betrifft: In Userform-Textbox scrollen
von: Roland Hochhäuser
Geschrieben am: 22.02.2005 13:45:14
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
Bild

Betrifft: AW: In Userform-Textbox scrollen
von: Bert
Geschrieben am: 22.02.2005 17:43:09
Verschieb einfach die Top-Position kontinuierlich.
Bert
Bild

Betrifft: AW: In Userform-Textbox scrollen
von: Roland Hochhäuser
Geschrieben am: 23.02.2005 12:07:53
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
Bild

Betrifft: AW: In Userform-Textbox scrollen
von: Bert
Geschrieben am: 23.02.2005 14:24:35
Verwende einfach die API-Funktion Sleep(in Millisekunden).
Bert
Bild

Betrifft: AW: In Userform-Textbox scrollen
von: Roland Hochhäuser
Geschrieben am: 23.02.2005 16:00:06
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
 Bild

Beiträge aus den Excel-Beispielen zum Thema "In Userform-Textbox scrollen"