在工作簿打开后立即使用Application.Wait

时间:2016-02-05 17:11:16

标签: excel vba excel-vba

打开后我需要我的工作簿显示某种颜色。然后5秒后我想改变颜色。所以我实现了以下代码:

Private Sub Workbook_Open()
    Application.ActiveSheet.Cells.Interior.ColorIndex = 4    
    Application.Wait (Now + TimeValue("0:00:05"))
    Application.ActiveSheet.Cells.Interior.ColorIndex = 5
End Sub

然而,当我点击我的文件时,它会加载5秒然后打开并仅显示第二种颜色。如何在仍然使用application.wait时解决这个问题。

2 个答案:

答案 0 :(得分:2)

我对此进行了测试并且有效。

在Workbook_Open

中使用此功能
Private Sub Workbook_Open()
    'Schedules a procedure to be run at a specified time in the future
    '(either at a specific time of day or after a specific amount of time has passed).
    Application.OnTime Now + TimeValue("00:00:01"), "DoThis"
End Sub

将其放入模块中。不工作或不起作用

Private Sub DoThis()
    Application.ActiveSheet.Cells.Interior.ColorIndex = 4
    Application.Wait (Now + TimeValue("0:00:05"))
    Application.ActiveSheet.Cells.Interior.ColorIndex = 5
End Sub

答案 1 :(得分:0)

要直接回答所提出的问题,如果您确实真的不得不使用OnTime,这是一种解决方法......

可以在Workbook_Open之后立即触发事件。您可以通过操纵Worksheet_Activate子中的活动工作表来强制执行Workbook_Open事件。然后,您可以使用Application.Wait内的原始Worksheet_Activate代码。

Private Sub Workbook_Open()
    Application.ActiveSheet.Cells.Interior.ColorIndex = 4
    Sheets(2).Activate
    Sheets(1).Activate
End Sub

Private Sub Worksheet_Activate()
    Application.Wait (Now + TimeValue("0:00:05"))
    Application.ActiveSheet.Cells.Interior.ColorIndex = 5
End Sub