基础Excel VBA代码触发后NumLock自动关闭,原因不明求解答
解决VBA宏触发后NumLock自动关闭的问题
问题场景
我日常使用一个存储在PERSONAL.XLSB里的全局宏,通过窗体控件按钮触发,代码如下:
Sub Today() Dim Today As Date Today = Date ActiveCell.Value = Today Application.SendKeys "{TAB}" End Sub
每次点击按钮执行后,NumLock都会被自动关闭。
问题根源
Application.SendKeys "{TAB}" 是引发NumLock状态异常的关键。SendKeys本质是模拟键盘输入,这个过程会干扰系统对键盘锁状态的判断,导致NumLock意外关闭,这种行为在不同环境下表现不稳定。
修复方案
用直接选择单元格的方式替代SendKeys,既能实现光标右移的需求,又不会影响键盘锁状态:
Sub Today() Dim Today As Date Today = Date ActiveCell.Value = Today ' 替换SendKeys,将光标移至右侧单元格 If ActiveCell.Column < ActiveSheet.UsedRange.Columns.Count Then ActiveCell.Offset(0, 1).Select End If End Sub
额外说明
- 这段代码的效果和原宏一致:写入当前日期后光标右移,但完全避免了SendKeys带来的副作用。
- 加入列数判断是为了防止当前单元格在工作表最右侧时触发错误。
内容的提问来源于stack exchange,提问作者Paul
相关产品推荐
相关产品推荐

