Как создать макрос Excel, который будет автоматически прокручиваться и возвращаться к началу? - PullRequest
0 голосов
/ 08 июня 2018

Так что я очень новичок в VBA / макросов в Excel, поэтому, пожалуйста, медведь со мной.

В конечном счете, мы показываем электронные таблицы на наших телевизорах в магазине, и я собираюсь реализовать функцию автоматической прокрутки, которая будет медленно прокручиваться до конца данных и возвращаться к началу, когда они достигнут конца, делаяэто постоянно.

Пока у меня есть это:

Sub Macro12()
    Range("A1").Select
Do Until IsEmpty(ActiveCell)
    ActiveWindow.SmallScroll Down:=2
Loop
End Sub

Он прокручивается, но просто продолжает идти.Как я могу сделать это цикл возвращается к началу и начать снова на непрерывном цикле?

Спасибо!

Ответы [ 3 ]

0 голосов
/ 08 июня 2018

Вот тот, который прокручивает около пятой части страницы за раз, пока не достигнет нижней части страницы.Вы можете настроить таймер, если чувствуете, что он движется слишком быстро / медленно

Sub ScrollToBottom()

    Dim lastrow As Integer
    lastrow = Range("A" & Rows.count).End(xlUp).row

    While Intersect(Rows(lastrow), ActiveWindow.VisibleRange) Is Nothing
        Application.Wait (Now + TimeValue("0:00:01"))
        ActiveWindow.SmallScroll down:=Round(ActiveWindow.VisibleRange.Rows.count / 5, 0)
    Wend

    Application.Wait (Now + TimeValue("0:00:03"))
    ActiveWindow.ScrollRow = 1

End Sub
0 голосов
/ 08 июня 2018

Вот мой взгляд на это:

Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Sub LoopBackAndForth()
    Dim i As Long, j As Long
    Dim rng As Range

    i = 1
    With ActiveSheet ' change sheet if required
        Set rng = .Range("A" & i)
        rng.Select
        Do Until rng.Value = vbNullString
            i = i + 1
            Set rng = .Range("A" & i)
            Sleep 75 ' the optimal value may vary from pc to pc
            ActiveWindow.SmallScroll down:=1 ' changed from 2 in the original post
        Loop

        For i = i To 1 Step -1
            Set rng = .Range("A" & i)
            Sleep 75 ' the optimal value may vary from pc to pc
            ActiveWindow.SmallScroll up:=1 ' changed from 2 in the original post
        Next i

    End With
End Sub
0 голосов
/ 08 июня 2018

Это работает для меня:

Sub Macro12()
Dim lastRow As Long, i As Long
lastRow = Range("A" & Rows.Count).End(xlUp).Row

For i = 1 To lastRow Step 2
    Cells(i, 1).Select
    ActiveWindow.SmallScroll down:=2
    Application.Wait (Now + TimeValue("0:00:05")) 'Wait five seconds before continuing.
    If i = lastRow - 2 Or i = lastRow - 1 Then
        i = 0
        Cells(1, 1).Select
    End If
Next i
Debug.Print (i)

End Sub

Но обратите внимание, это бесконечный цикл.Это может (вероятно) в конечном итоге привести к сбою Excel.

...