连续循环通过工作表和宏来停止操作

时间:2015-03-06 07:29:20

标签: excel vba excel-vba

我是新手vba用户.. 标题可能略有误导,但基本上我从表1,2,3和4开始。

我需要创建一个宏来循环浏览电子表格,就像一个间隔10秒的powerpoint演示文稿。

我尝试谷歌搜索网页,但只能找到这个

Sub DisplayLoop() 'Application.ScreenUpdating = True默认为true

Dim wkb As Workbook
Set wkb = ThisWorkbook

wkb.Sheets("Sheet1").Activate

Application.Wait Now + TimeSerial(0, 0, 10)

wkb.Sheets("Sheet2").Activate

Application.Wait Now + TimeSerial(0, 0, 10)

wkb.Sheets("Sheet3").Activate

Application.Wait Now + TimeSerial(0, 0, 2)

wkb.Sheets("Sheet1").Activate

Application.Wait Now + TimeSerial(0, 0, 10)
End Sub

我需要帮助才能让它无休止地连续循环播放第1 - 3页和宏以停止连续循环..

希望他们是善良的灵魂,帮助我。 非常感谢你..

编辑:终于能够将代码修改为此..它重复x次。 编辑有没有办法暂停正在运行的宏?如何修改代码?

 Sub DisplayLoop()
'Application.ScreenUpdating = True  its true by default

Dim I
For I = 1 To 20

Dim wkb As Workbook
Set wkb = ThisWorkbook

wkb.Sheets("Sheet1").Activate

Application.Wait Now + TimeSerial(0, 0, 2)

wkb.Sheets("Sheet2").Activate

Application.Wait Now + TimeSerial(0, 0, 2)

wkb.Sheets("Sheet3").Activate

Application.Wait Now + TimeSerial(0, 0, 2)

wkb.Sheets("Sheet1").Activate

Application.Wait Now + TimeSerial(0, 0, 2)
Next I

End Sub

2 个答案:

答案 0 :(得分:0)

非常基本且不专业的方式:

Sub DisplayLoop()

Dim wkb As Workbook
Set wkb = ThisWorkbook

RestartX:
    wkb.Sheets("Sheet1").Activate
    Application.Wait Now + TimeSerial(0, 0, 2)

    wkb.Sheets("Sheet2").Activate
    Application.Wait Now + TimeSerial(0, 0, 2)

    wkb.Sheets("Sheet3").Activate
    Application.Wait Now + TimeSerial(0, 0, 2)

    ' if you have following two lines macro will stop at sheet1 x2 time
    wkb.Sheets("Sheet1").Activate
    Application.Wait Now + TimeSerial(0, 0, 2)
GoTo RestartX

End Sub

这将有效但是停止它可能是一个问题:)。能够停止这是Ctrl + Pause(希望:))

答案 1 :(得分:0)

我用DO循环来解决这个问题:

Do
   Switch to 1
   wait
   Switch to 2
   etc
Loop Until StopCommand = True

然后在每张纸上放一个按钮,将按钮设置为True。您必须声明布尔变量,以便所有内容都能看到它(并在开始循环之前将其设置为False),而全局变量有它们的缺点,对于您正在做的事情,它应该可以正常工作

这本身就会完成循环并在最后一次滑动后退出"点击按钮后;你可以退出"这个"通过简单地将每个Activate和Wait语句括在

中来缩短时间
If Not StopCommand Then
   Activate... 
   Wait...
End If

这样你就可以在延迟之后退出"这张幻灯片"饰面。