EXCEL单元格公式具有“响应式”特征,即表格中任一个单元格数据发生变化后,所有设置了公式的单元格数据也随之变化。也就是说,只有手动操作单元格后,才能激活其它公式单元格的响应。
例如,EXCEL函数NOW返回年、月、日以及小时和分钟,如4/5/2023 8:03。如果表格中单元格没有变化,则显示时间不变,只有某个单元格发生变化了,录入函数NOW的单元格才会更新时间。
当要求按时、或按其它条件自动触发公式单元格的响应,则需要用EXCEL VBA设定设定条件自动触发句柄来实现。
一、EXCEL自动化设置事件驱动事件
1、用VBA的Application.OnTime设定重复运行操作
VBA的Application.OnTime事件指定一个过程在将来特定时间开始运行,是VBA非常重要的定时触发事件,需要按时自动管理EXCEL表格时就会用到。
为此,编写事件【WriteRandomNumber】代码如下:
Sub WriteRandomNumber()
Dim sTime As String
sTime = "00:00:" & Sheet1.Range("C4").Value
Randomize
' 初始化随机数生成器
Sheet1.Range("C3").Value = Int(Rnd * 100)
' 生成0 到 100 之间的随机数并将其写入 A1 单元格
Application.OnTime Now TimeValue(sTime), "WriteRandomNumber", , True
' 延迟C4指定秒数重复执行 WriteRandomNumber
End Sub
运行【WriteRandomNumber】事件,依次完成以下操作:
- 在EXCEL表格sheet1单元格C4读取自动变化时间间隔(单位为秒);
- 生成生成0 到 100 之间的随机数并将其写入 A1 单元格;
- 延迟指定秒数重复运行事件WriteRandomNumber。
将【WriteRandomNumber】事件代码复制、粘贴到【模块1】编辑栏中,如图:
图1:复制、粘贴【WriteRandomNumber】事件代码到【模块1】编辑栏中
2、打开EXCEL文档时自动启动运行【WriteRandomNumber】事件代码
打开EXCEL文档事件编辑窗口
图2:鼠标双击资源管理器的【ThisWorkBoob】,在弹出文档事件窗口【通用】选项中选【文档事件】
图3:在弹出文档事件窗口【声明】选项中选事件【Open】
将代码【Call WriteRandomNumber】复制、粘贴到事件Workbook_Open中,