Vba 不活动后的触发代码
我希望我的WB在非活动时间后触发一些代码(当然是由我设置的)。我只能找到在非活动时间后关闭WB的代码,但我希望代码能够执行其他操作,而不是关闭WB。我找到了关闭WB的代码: 此工作簿模块:Vba 不活动后的触发代码,vba,excel,Vba,Excel,我希望我的WB在非活动时间后触发一些代码(当然是由我设置的)。我只能找到在非活动时间后关闭WB的代码,但我希望代码能够执行其他操作,而不是关闭WB。我找到了关闭WB的代码: 此工作簿模块: Private Sub Workbook_BeforeClose(Cancel As Boolean) stop_Countdown ThisWorkbook.Save End Sub Private Sub Workbook_Open() start_Countdown End Su
Private Sub Workbook_BeforeClose(Cancel As Boolean)
stop_Countdown
ThisWorkbook.Save
End Sub
Private Sub Workbook_Open()
start_Countdown
End Sub
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
stop_Countdown
start_Countdown
End Sub
Private Sub Workbook_SheetCalculate(ByVal Sh As Object)
stop_Countdown
start_Countdown
End Sub
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, _
ByVal Target As Excel.Range)
stop_Countdown
start_Countdown
End Sub
常规模块:
Option Explicit
Public Close_Time As Date
Sub start_Countdown()
Close_Time = Now() + TimeValue("00:00:10")
Application.OnTime Close_Time, "close_WB"
End Sub
Sub stop_Countdown()
Application.OnTime Close_Time, "close_WB", , False
End Sub
Sub close_wb()
ThisWorkbook.Close True
End Sub
在代码的哪一部分中,我应该介绍我希望WB在不活动后执行的事件,而不是关闭WB?您需要在常规模块中进行更改 您不必在
应用程序.OnTime
函数调用中传递字符串close_wb()
,而必须指定包含要执行的任何操作的过程的名称
以下是开始使用的代码:
Option Explicit
Public Inactivity_Time As Date
Sub start_Countdown()
Inactivity_Time = Now() + TimeValue("00:00:10")
Application.OnTime Inactivity_Time, "my_procedure" ' <- Notice that I changed the name of the procedure here
End Sub
Sub stop_Countdown()
On Error Resume Next
Application.OnTime Inactivity_Time, "my_procedure", , False ' <- And here too.
On Error GoTo 0
End Sub
Sub my_procedure()
' The code to perform you event goes here
End Sub
并添加以下程序:
Public Sub Close_WB()
stop_CountDown
ThisWorkbook.Close SaveChanges:=True
End Sub
调用
工作簿时,请确保Application.EnableEvents=true
。打开
对不起,问题写得不正确。这就是我需要帮助的地方,请再读一遍。你能解决你的问题吗?如果是,请接受帮助您的答案或创建您自己的答案。让我们不断更新!请看一下聊天@OscarAnthony@OscarAnthony同一作者提出的两个问题都是关于在一段时间的活动后运行事件。除了close_wb()过程之外,我是否应该更改其他内容?我的意思是,我在哪里调用程序myProcedure()?您实际上不需要手动调用myu procedure()
。Excel自动运行函数Application.OnTime
的字符串参数中指定的过程。例如,如果您想运行另一个过程,只需将应用程序的函数调用中的“my_procedure”
部分替换为所需的另一个过程的名称。此工作簿中的代码保持不变?我这样做了,在关闭工作簿后出现此错误:运行时错误“1004”
Public Sub Close_WB()
stop_CountDown
ThisWorkbook.Close SaveChanges:=True
End Sub