需要VB来使Excel在实时和后台计算表单或范围
我怎样才能让excel实时连续计算一个表格/范围(不是1 calc / sec)并在后台执行?
我希望这个公制时钟像跑秒表一样运行。
=IF(LEN(ROUND((HOUR(NOW())*(100/24)),0))=1,"0"&ROUND((HOUR(NOW())*(100/24)),0),ROUND((HOUR(NOW())*(100/24)),0))&":"&IF(LEN(ROUND((MINUTE(NOW())*(100/60)),0))=1,"0"&ROUND((MINUTE(NOW())*(100/60)),0),ROUND((MINUTE(NOW())*(100/60)),0))&":"&IF(LEN(ROUND((SECOND(NOW())*(100/60)),0))=1,"0"&ROUND((SECOND(NOW())*(100/60)),0),ROUND((SECOND(NOW())*(100/60)),0))
我用以下来产生你正在寻找的效果:
Option Explicit Public TimerRunning As Boolean Dim CalculationDelay As Integer Public Sub StartStop_Click() If (TimerRunning) Then TimerRunning = False Else TimerRunning = True TimerLoop End If End Sub Private Sub TimerLoop() Do While TimerRunning '// tweak this value to change how often the calculation is performed ' If (CalculationDelay > 500) Then CalculationDelay = 0 Application.Calculate Else CalculationDelay = CalculationDelay + 1 End If DoEvents Loop End Sub
StartStop_Click
是我连接到秒表的开始/停止button的macros。 您可以看中它,并根据TimerRunning
的值将其名称更改为“开始”或“停止”,但我保持简单来说明这个概念。
这里的两个关键是:
Application.Calculate
这强制Excel计算工作表,并且:
DoEvents
这允许VBA在后台运行(即,Excel不会停止响应用户input)。 即使计时器正在运行,也可以按“停止”button。
我认为这可能会使你的“(不是1 calc / sec)”标准失败,但是我得到了类似如下的结果。 假定您的公式位于名为Sheet1的工作表的单元格A1中。
在ThisWorkbook代码模块中:
Private Sub Workbook_Open() Application.OnTime Now + TimeValue("00:00:01"), "RecalculateRange" End Sub
…在一个普通的代码模块中:
Public Sub RecalculateRange() Sheet1.Range("A1").Calculate Application.OnTime Now + TimeValue("00:00:01"), "RecalculateRange" End Sub
- 如何在访问PageSetup属性时避免运行时错误
- Excel预测未来的价值
- Excel VBA:为什么复制/粘贴覆盖其他数据,但只有60,000行后?
- Excel VBA代码,一个macros在自己运行时工作,但在一个组中运行时debugging
- VLOOKUP为SMALL函数返回一个数组
- Excel中的工作表更改
- Epplus导出错误是这样的:'System.Data.DataSet'对象types'System.Data.DataTable'不是实物。
- 运行一个VBA Excelmacros,即使将Application.ScreenUpdating设置为True和False,也会导致屏幕闪烁
- Liferay:将dynamic数据列表显示表导出到Excel