【问题标题】:Continuous Looping through sheets and macro to stop the action连续循环通过工作表和宏以停止操作
【发布时间】:2015-03-06 19:00:01
【问题描述】:

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

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

我试图用谷歌搜索网络,但只能找到这个

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

【问题讨论】:

  • 您需要遍历书中的所有工作表还是其中的几张?
  • 嗨Taosique,我只需要循环表1,2和3。我设法修改了我的代码。参考我的编辑。现在我需要创建另一个模块来停止宏。是否有可能 I = 1 到(无限?)

标签: vba excel


【解决方案1】:

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

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

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

这本身会在您单击按钮后完成循环并在最后一次“幻灯片”之后退出;您可以通过简单地将每个激活和等待语句包含在

中来在“此”幻灯片的时间之后退出
If Not StopCommand Then
   Activate... 
   Wait...
End If

这样你就可以在“这张幻灯片”的延迟结束后退出。

【讨论】:

  • 嗨,出于好奇,您能否在其他宏运行时单击该按钮?
  • 有没有办法暂停正在运行的宏?
【解决方案2】:

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

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(希望 :))

【讨论】:

    猜你喜欢
    • 2015-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多