用VBA显示工作表

我在工作簿中有一套工作表。 我在其中一张纸上列出了一张特定栏目的名单。 此工作簿将显示在监视器/仪表板上。 有没有办法,我可以通过床单循环显示他们一个接一个。

例如,这本书作为2张。 Sheet1和Sheet2。 当我运行macros时,Sheet1应该在屏幕上可见5秒,然后Sheet2 5秒。 然后Shhet1(循环)。

我可以添加时间延迟和循环,但只是不能改变表的显示。 我已经尝试了下面的方法,这不工作

Application.ScreenUpdating = True Worksheets("Sheet1").Activate Worksheets("Sheet1").Select 

更新:

谢谢你的回应。 我已经尝试了所有,但不能得到它的工作。 当我运行代码,表单显示不会改变。 例如,我的工作簿有三张工作表Sheet1,Sheet2和Sheet3,我写代码显示sheet1 10秒,sheet2 10秒,sheet3 10秒按顺序,在执行期间excel卡在从我开始的工作表macros30秒,并显示最后的工作表(sheet3)。 不知道这是否是因为代码/应用程序中的一些设置。

无论如何,因为这是行不通的,我决定从Excel复制图表到PowerPoint(通过VBA),并使用PPT显示在仪表板。 我已经使用下面的链接提供的代码。

再次感谢您的build议

http://peltiertech.com/Excel/XL_PPT.html

它总是更好地使用工作簿名称,然后是工作表名称,然后是避免混淆的范围。 即使多个工作簿已打开,此代码也可以正常工作。

 Sub changeSh() 'Application.ScreenUpdating = True its true by default Dim wkb As Workbook Set wkb = ThisWorkbook wkb.Sheets("Sheet1").Activate Application.Wait Now + TimeSerial(0, 0, 5) wkb.Sheets("Sheet2").Activate End Sub 

你可以试试这个。 macros是一个无限循环通过3张(它可以设置为任何数量),基于定时器设置(这里2秒 )。 您可以通过代码在每个工作表加载插入一个msg./validation框,询问用户是否要继续洗牌或停止当前select(这不是用户友好的)。 或者,您可以创build一个新表(即MacroKeys),并为洗牌设置validation值(是/否)(请查看下面的代码)。 最后一步是在每个工作表上添加2个button来创build一个所谓的UI来调用macros[Shuffle]和[Stop]。 无论如何,你应该使用[Application.OnTime alertTime,“macros名称”]function

 Sub Show_Sheet1() Dim MacroKeys As Worksheet: Set MacroKeys = Sheets("MacroKeys") Dim Sh1 As Worksheet: Set Sh1 = Sheets("Sheet1") Dim Sh2 As Worksheet: Set Sh2 = Sheets("Sheet2") Dim Sh3 As Worksheet: Set Sh3 = Sheets("Sheet3") MacroKeys.Range("A1") = "Yes" ' [...] Sh1.Visible = True Sh1.Select Sh2.Visible = False Sh3.Visible = False ' [...] If MacroKeys.Range("A1") = "Yes" Then alertTime = Now + TimeValue("00:00:02") Application.OnTime alertTime, "Show_Sheet2" End IF End Sub Sub Show_Sheet2() Dim MacroKeys As Worksheet: Set MacroKeys = Sheets("MacroKeys") Dim Sh1 As Worksheet: Set Sh1 = Sheets("Sheet1") Dim Sh2 As Worksheet: Set Sh2 = Sheets("Sheet2") Dim Sh3 As Worksheet: Set Sh3 = Sheets("Sheet3") MacroKeys.Range("A1") = "Yes" ' [...] Sh2.Visible = True Sh2.Select Sh1.Visible = False Sh3.Visible = False ' [...] If MacroKeys.Range("A1") = "Yes" Then alertTime = Now + TimeValue("00:00:02") Application.OnTime alertTime, "Show_Sheet3" End IF End Sub Sub Show_Sheet3() Dim MacroKeys As Worksheet: Set MacroKeys = Sheets("MacroKeys") Dim Sh1 As Worksheet: Set Sh1 = Sheets("Sheet1") Dim Sh2 As Worksheet: Set Sh2 = Sheets("Sheet2") Dim Sh3 As Worksheet: Set Sh3 = Sheets("Sheet3") MacroKeys.Range("A1") = "Yes" ' [...] Sh3.Visible = True Sh3.Select Sh1.Visible = False Sh2.Visible = False ' [...] If MacroKeys.Range("A1") = "Yes" Then alertTime = Now + TimeValue("00:00:02") Application.OnTime alertTime, "Show_Sheet1" End IF End Sub Sub Stop_Shuffling() Dim MacroKeys As Worksheet: Set MacroKeys = Sheets("MacroKeys") 'edit !!! MacroKeys.Range("A1").Value = "No" End Sub 

注意! 您必须添加一个新工作表并将其命名为“MacroKeys” 。 你可以隐藏它,并保持它。 注意! 要添加分配给它们的macros的button,请按Alt + N,+ SH并select一个形状。 然后,右键单击形状>分配macros(并select相应的macros)。 可选的! 使用Alt + W,+ F,+ R阻止顶行,并将buttonheight =保持为行1的高度。 注意! 您不想隐藏表单,只需将'.Visible = false / true ' 注释掉,然后将“ select ”replace为“ 激活” 。 你会弄明白的! 希望能帮助到你!

 Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) Sub changeSh() While (True) Sheets(1).Activate 'Use your method to add time delay here 'Sleep 5000 Sheets(2).Activate 'Use your method to add time delay here 'Sleep 5000 Wend End Sub 

激活工作表由Sheet.Activate方法完成。 尝试这个

 Application.ScreenUpdating = True Worksheets("Sheet1").Activate Worksheets("Sheet1").Select Worksheets("Sheet1").Activate Worksheets("Sheet1").Activate