如何使用键盘按键替代点击Form Control Spin Button?
完全可以用VBA宏实现键盘按键控制,不用频繁切换鼠标。以下是直接可用的方案:
实现步骤
- 右键点击目标工作表的标签,选择「查看代码」打开VBA编辑器
- 将下面的代码粘贴到工作表对应的代码模块中
- 把代码里的
"SpinButton1"替换成你实际的Spin Button控件名称(选中控件后,Excel左上角的名称框会显示控件名)
Private Sub Worksheet_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) ' 绑定目标Spin Button控件 Dim spinControl As Object Set spinControl = Me.Shapes("SpinButton1").OLEFormat.Object ' 上箭头按键(KeyCode=38):增加数值 If KeyCode = 38 Then If spinControl.Value < spinControl.Max Then spinControl.Value = spinControl.Value + spinControl.SmallChange End If KeyCode = 0 ' 取消默认的单元格滚动行为 ' 下箭头按键(KeyCode=40):减少数值 ElseIf KeyCode = 40 Then If spinControl.Value > spinControl.Min Then spinControl.Value = spinControl.Value - spinControl.SmallChange End If KeyCode = 0 ' 取消默认的单元格滚动行为 End If End Sub
自定义说明
- 若想更换控制按键,修改
KeyCode值即可:比如PageUp是33、PageDown是34,可查对应按键的ASCII码替换 - 宏会严格遵循Spin Button本身设置的
Min(最小值)、Max(最大值)、SmallChange(步长)属性 - 如果需要在所有工作表生效,把代码移到
ThisWorkbook模块,改成下面的事件:Private Sub Workbook_SheetKeyDown(ByVal Sh As Object, ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) Dim spinControl As Object On Error Resume Next ' 忽略无Spin Button的工作表 Set spinControl = Sh.Shapes("SpinButton1").OLEFormat.Object On Error GoTo 0 If Not spinControl Is Nothing Then If KeyCode = 38 Then If spinControl.Value < spinControl.Max Then spinControl.Value = spinControl.Value + spinControl.SmallChange End If KeyCode = 0 ElseIf KeyCode = 40 Then If spinControl.Value > spinControl.Min Then spinControl.Value = spinControl.Value - spinControl.SmallChange End If KeyCode = 0 End If End If End Sub
内容的提问来源于stack exchange,提问作者ham fam
相关产品推荐
相关产品推荐

