如何使用Excel与Visual Basic实现每10秒计数并写入K列
Excel VBA 实现每10秒区间计数并写入K列的解决方案
实现思路
- 用
Application.OnTime方法实现定时触发,每次执行完成后自动注册下一次10秒后的执行任务 - 用公共变量存储当前的区间序号,避免每次执行时计数被重置
- 每次执行时自动定位K列第一个空白单元格写入当前序号,完成后序号自动+1
完整代码
打开VBA编辑器(快捷键Alt+F11),插入一个标准模块,粘贴以下代码即可:
' 公共变量存储当前区间序号和下一次执行的时间 Public currentSeq As Long Public nextRunTime As Date ' 启动定时计数的主程序 Sub Start10sCount() ' 初始化序号,首次运行从1开始 If currentSeq = 0 Then currentSeq = 1 ' 定位K列第一个空白行 Dim lastRow As Long lastRow = Cells(Rows.Count, "K").End(xlUp).Row + 1 ' 写入当前区间序号到K列 Cells(lastRow, "K").Value = currentSeq ' 序号自增,为下一次写入做准备 currentSeq = currentSeq + 1 ' 注册10秒后再次执行本程序 nextRunTime = Now + TimeValue("00:00:10") Application.OnTime nextRunTime, "Start10sCount" End Sub ' 停止定时计数的程序 Sub Stop10sCount() On Error Resume Next ' 避免未启动定时任务时报错 Application.OnTime nextRunTime, "Start10sCount", , False currentSeq = 0 ' 重置序号,下次启动重新从1开始计数 End Sub
使用说明
- 启动计数:运行
Start10sCount宏即可,程序会自动每10秒向K列追加写入区间序号 - 停止计数:运行
Stop10sCount宏即可终止定时任务 - 如果需要自定义初始序号,修改
currentSeq的初始赋值即可
注意事项
- 关闭Excel前请先运行停止程序,否则Excel可能会在定时触发时间到达时自动重启
- 如果需要首次写入延迟到第一个10秒结束后执行,只需要把写入K列的代码移到
OnTime注册逻辑之前即可
内容的提问来源于stack exchange,提问作者Grace Kashman
相关产品推荐
相关产品推荐

