Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 在工作表和宏中连续循环以停止操作_Vba_Excel - Fatal编程技术网

Vba 在工作表和宏中连续循环以停止操作

Vba 在工作表和宏中连续循环以停止操作,vba,excel,Vba,Excel,我是vba的新手。。 标题可能有点误导,但本质上我是从第1、2、3和4页开始的 我需要创建一个宏来循环浏览电子表格,有点像powerpoint演示文稿,间隔10秒 我试着用谷歌搜索网页,但是只能找到这个 子显示循环 'Application.ScreenUpdate=True默认情况下为True Dim wkb As Workbook Set wkb = ThisWorkbook wkb.Sheets("Sheet1").Activate Application.Wait Now + Tim

我是vba的新手。。 标题可能有点误导,但本质上我是从第1、2、3和4页开始的

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

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

子显示循环 'Application.ScreenUpdate=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

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

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:

我将使用DO循环:

Do
   Switch to 1
   wait
   Switch to 2
   etc
Loop Until StopCommand = True
然后在每张纸上,放置一个按钮,该按钮仅将StopCommand设置为True。您必须声明该布尔变量,以便所有人都可以看到它,并在开始循环之前将其设置为False。虽然全局变量有其缺点,但对于您正在执行的操作,它应该可以正常工作

它本身将完成循环,并在单击按钮后在最后一张幻灯片后退出;您只需将每个Activate和Wait语句封装在

If Not StopCommand Then
   Activate... 
   Wait...
End If

这样,您就可以在本幻灯片的延迟结束后退出。

您需要在书中的所有页或其中几个页上循环吗?嗨,陶思克,我只需要循环第1、2和3页。我设法修改了我的代码。请参阅我的编辑。现在我需要创建另一个模块来停止宏。是否可以将I=1设置为无穷大?您好,只是出于好奇,当另一个宏正在运行时,您是否可以单击该按钮?是否有方法暂停正在运行的宏?