Tag: 定时器

如何使用Excel 2016 VBAmacros编辑器创build自动计时器?

我需要在Excel 2016 VBA编辑器中创build一个计时器,每秒钟都会closures并显示一条消息。 我有一个简单的代码,可以做到这一点; 但是当我运行代码时出现一个消息框,然后出现错误。 我的代码如下所示: Private Sub Workbook_Open() RunEveryTwoMinutes End Sub Sub RunEveryTwoMinutes() MsgBox ("Stop!") Application.OnTime Now + TimeValue("00:00:01"), "RunEveryTwoMinutes" End Sub 我收到错误状态:“不能运行macros'C:user | generic \ Book1.xlsm'。macros可能不可用在此工作簿或所有macros可能被禁用。 我不知道发生了什么。 我只需要find一种方法来创build一个一秒钟的计时器,一旦代码初始化就启动。

Excel VBA:如何实现定时器来检查代码超时

我有一些运行在打开的工作簿上的代码,它使用表单来请求用户select共享目录映射到的驱动器。 这是因为工作簿使用VBA代码来检索并将数据保存到位于此共享目录中的共享工作簿,但本地驱动器由用户更改,因此他们需要select它。 我遇到的问题发生在用户已经将多个共享目录映射到他们的计算机上并因此具有多个驱动器时…例如:1个目录位于驱动器G:另一个位于X :. 如果他们select工作簿所在的共享目录的驱动器,则没有问题。 但是,如果他们不小心select其他共享目录的驱动器,代码挂起。 我有一个循环设置,检查,看看他们已经select了正确的驱动器… IE浏览器:如果他们selectA :(我的例子中不存在的驱动器),那么代码将注意到,他们select了不正确的驱动器和提示他们再次。 但是,如果select另一个共享目录,而不是创build错误,则代码将挂起。 在下面的代码中,表单1中的单元格AD3包含true或false(在sub的开始处设置为false)。 它被设置为true,如果他们已经select了正确的驱动器,因为Module6.PipelineRefresh不会再导致错误(该子试图打开共享驱动器中的工作簿…如果select的驱动器不正确,它显然会返回一个错误) 代码如下: Do While Sheet1.Range("ad3") = False On Error Resume Next Call Module6.PipelineRefresh '~~ I'm guessing the code hangs here. Instead of returning an error immediately, as it would if they simply chose a non-existant drive, it appears to get stuck trying to open […]

在excel中创build一个定时器,在运行时显示十分之几秒的时间

我试图把一个计时器放入Excel中的一个macros。 我已经跟着一个教程,但是,计时器始终放在0秒的运行时间。 我知道我所写的东西的时间复杂性很小,但是我认为它仍然会在几十秒或十分之一秒左右。 Excel在这种情况下下降了吗? 'For me to keep track of time complexity Dim StartTime As Long Dim SecondsElapsed As Long StartTime = Timer 其次是子代码 'Timer runs to give lifespan of operation SecondsElapsed = Round(Timer – StartTime, 2) Cells(24, 4).Value = "This took " & SecondsElapsed & " seconds to run"

如何在Excel工作簿中检测用户不活动

我想在一段时间的不活动之后在Excel工作簿macros中执行一个操作(隐藏/保护一些工作表)。 什么是最好/最简单的方法来实现这一点? 假设我将使用Application.OnTime来定期检查用户是否已经激活。 但是,我应该处理哪些事件以查看用户是否“活跃”(即,与工作簿有什么关系)? 澄清:我想检测所有活动,而不仅仅是改变。 即包括鼠标点击,select,复制,键盘导航,更改工作表,… 我假设当UI事件发生,代表用户活动,我将设置一个variables,因此: LastActivityTime = Now 而由Application.OnTime运行的macros将检查此variables以查看用户最近是否处于活动状态。 哪些事件(除了SheetChange )我需要处理设置这个variables? 我希望有KeyUp和MouseUp事件,这两个可能已经足够了。 更新:我已经通过处理Workbook_SheetActivate , Workbook_SheetSelectionChange和Workbook_WindowActivate实现了这一点。 实际上这可能就够了。

Excel VBA Application.OnTime。 我认为使用这个想法是一个糟糕的主意吗?

我有一些用户,我支持要求事情自动发生(更多的自动化,但这是另一点!)。 人们希望每120秒发生一次事件(参见我的另一个问题),另外还有一件事要在每个工作日的下午5点发生。 这必须在Excel表格,所以因此VBA作为插件等将是一个不,因为它需要自包含。 我有一个很大的不喜欢使用Application.OnTime我认为它的危险和不可靠的,其他人都认为呢? 编辑:交叉帖是在VBAmacros定时器风格运行代码每集秒数,即120秒

两次倒计时(不是date)

我有一个小小的“工作计时器”,可以让我看看在一份工作上花了多长时间,还有多less时间才能完成工作。 它看起来像这样: 在工作上花费的时间是正确的,但工作正常,但剩余的时间需要工作的开始时间,将分配的工作时间添加到工作时间并产生“结束时间”。 当我从“结束时间”减去当前时间( Now() ),我得到奇怪的结果。 这是我的代码: Public dismissed As Boolean Public TimeUpdate As Integer Public Function TimeSpent( _ Optional TimeStarted As Variant, _ Optional Allocated As Variant, _ Optional TU) If Not IsMissing(TimeStarted) Then TimeSpent = Now() – TimeValue(TimeStarted) End If End Function Public Function Remaining( _ Optional TimeStarted As Variant, _ Optional Allocated […]

Windows定时器vba改变速度

我使用VBA中的Windows定时器API来每0.5秒处理一个子程序。 我希望能够在定时器运行时更​​改timerproc的速度。 不幸的是StartTimer子在开始时只调用一次。 任何想法如何我可以修改我的代码来改变速度(比如0.25)? Public Declare Function SetTimer Lib "user32" ( _ ByVal HWnd As Long, _ ByVal nIDEvent As Long, _ ByVal uElapse As Long, _ ByVal lpTimerFunc As Long) As Long Public Declare Function KillTimer Lib "user32" ( _ ByVal HWnd As Long, _ ByVal nIDEvent As Long) As Long Public TimerID As […]

Excel VBA计时器的性能取决于哪个表处于活动状态?

我有许多工作簿,每张工作表有不同数量的方程式,彼此相互联系。 我有一个工作簿广泛的VBA计时器,应该每5秒运行一次。 当我在没有很多公式的工作表上工作时,似乎每5秒运行一次…但是,如果我然后将活动工作表更改为“繁忙”工作表,则vba定时器只是不会熄灭…或者如果它熄灭,就像几分钟后。 直到我再次切换到一个不太忙碌的表格,然后这个定时器像正常一样神奇地运行,而不需要重置任何东西。 我没有任何特别的VBA代码专门在繁忙的工作表上…我不明白为什么VBA计时器代码将无法在所有表中一致运行? 如果定时器受到影响,则应该影响到所有的纸张,而不仅仅是某些纸张。 这里是VBA计时器代码: Sub TimerTick() On Error GoTo ErrorHandler If toggletimer = True Then RunMyCode runWhen_ES = Now() + TimeValue("00:00:05") Application.OnTime EarliestTime:=runWhen_ES, Procedure:="TimerTick", Schedule:=True End If ErrorHandler: End Sub

Excel VBA中的定时警报

我制作了一个日历来跟踪Excel 2003中的任务和类似项目。我需要做的是通过VBA设置一个计时器。 像这样的东西: run_in_x_secs ( timetowait, function to exec) 有没有办法在Excel VBA中做到这一点,或者我应该尝试find一个警报,通过命令行运行并从VBA运行。 你会怎么做?

API 2016计时器启动Workbook.close时发生Excel 2016崩溃

当一个API定时器触发closures时,我有一个工作簿在closures时崩溃了Excel。 编辑:下面的链接中的工作簿除了计时器和退出模块没有什么,它具有相同的行为,所以它不是内容的问题。 https://www.dropbox.com/s/x0xdwgj5h34ctdk/Book1.xlsm?dl=0 工作簿closuresExcel崩溃几秒钟后。 我已经尝试closures定时器,取消隐藏所有表单,卸载表单…所有对象都设置为Nothing 。 我正在做的就是Workbooks(ThisWorkbook.Name).Close SaveChanges:=True ?? !! 从UserForm调用相同的子没有问题。 工作簿closures,而没有Excel崩溃。 如何解决这个问题? Sub ApplicationExit() ' Call UnloadAllForms ' DoEvents ' Sleep 1000 ' Call StopCloseTimer 'DoEvents 'If Application.Workbooks.Count = 1 Then ' Workbooks(ThisWorkbook.Name).Save ' Application.Quit 'Else DoEvents Workbooks(ThisWorkbook.Name).Close SaveChanges:=True 'End If End Sub 定时器触发的代码是; Sub TimerCalled() If CloseTimerValue = "" Then Call Reset_CloseTimerValue DoEvents […]