Excel 宏根据用户输入时间自动刷新工作簿

Posted

技术标签:

【中文标题】Excel 宏根据用户输入时间自动刷新工作簿【英文标题】:Excel Macro auto-refresh workbook based on user input time 【发布时间】:2015-10-28 21:12:27 【问题描述】:

我在我的工作簿中使用了很多 WEBSERVICE 调用,这些调用是无连接的。因此,定期刷新值的唯一方法是使用宏。要在工作簿打开时以及之后每 30 秒自动执行此操作,以下方法效果很好:

Dim TimeToRun

Sub auto_open()
Sheets("DataInput").Select
Sheets("DataInput").Range("A1").Activate
    Application.CalculateFull
    Call ScheduleWorkbookRefresh
End Sub

Sub ScheduleWorkbookRefresh()
    TimeToRun = Now + TimeValue("00:00:30")
    Application.OnTime TimeToRun, "WorkbookRefresh"
End Sub

Sub WorkbookRefresh()
    Application.CalculateFull
    Call ScheduleWorkbookRefresh
End Sub

Sub auto_close()
    Application.OnTime TimeToRun, "WorkbookRefresh", , False
End Sub

像往常一样,用户声称 30 秒的刷新间隔介于太短和太长之间。所以,这个想法是让用户在单元格 B9 中填写他们想要的间隔。但是,似乎没有一种可接受的方式将单元格编号(或变量)放入 TimeValue 函数中。

关于如何修改宏以允许用户选择他们自己的刷新间隔,除了使宏可供用户编辑(类似于将上膛的枪、安全装置交给一群黑猩猩)之外,我有什么想法吗?

【问题讨论】:

您是否尝试过TimeToRun = Now + TimeValue("00:00:" & Sheets("DataInput").Range("A1").Value) 在单元格 A1 中用户可以输入秒数(不是字母或公式) 谢谢,我尝试了很多非常相似的东西,但不完全一样。你的工作非常好,虽然我不需要指定工作表,因为我已经激活了它。在我看来,它不必被激活,所以我会再修补一些。基础知识现在可以工作了,多亏了你,Paul! 我很高兴它有帮助。我提供了它作为答案,以便可以关闭问题 【参考方案1】:

使用TimeToRun = Now + TimeValue("00:00:" & Sheets("DataInput").Range("A1").Value)

【讨论】:

以上是关于Excel 宏根据用户输入时间自动刷新工作簿的主要内容,如果未能解决你的问题,请参考以下文章

根据两个工作簿中的 Excel 值发送电子邮件提醒

打开用户指定的 Excel 工作簿并将数据范围复制到另一个工作簿

使用Excel VBA,如何将某一个工作表保存到新建的Excel中?

让用户选择保存 Excel 工作簿的位置

与多个用户共享的宏不会复制/粘贴到工作簿中

VBA刷新查询然后调整列宽