好吧,如果我理解正确,你想用你自己的替换 tab 键的功能。为此,您要使用Application.OnKey
.
一个简单的例子,在 VBA 编辑器中打开 Sheet1 并输入以下代码
Private Sub Worksheet_Activate()
Application.OnKey "{TAB}", "TabIntercept"
End Sub
Private Sub Worksheet_Deactivate()
Application.OnKey "{TAB}"
End Sub
然后插入一个模块并编写一个公共子,如:
Public Sub TabIntercept()
ActiveCell.Offset(2).Activate
End Sub
现在在 Sheet1 上,选项卡将选择当前单元格下方的单元格 2,而不是像往常一样选择右侧的单元格 2。
当然,您可以使用 if 语句对此进行扩展。比如下面的例子,tab 的作用是正常的,除非你的光标在 Cell A2 并且 B2 的值为 5,在这种情况下它会跳转到 C3。
Public Sub TabIntercept()
If Not Intersect(ActiveCell, Sheet1.[A2]) Is Nothing And Sheet1.[B2] = 5 Then
Sheet1.[C3].Activate
Else
ActiveCell.Offset(0, 1).Activate
End If
End Sub
作为旁注,如果您想支持 shift-tab 并向后循环您的自定义选择,您将需要编写第二个 sub 并添加另一个对该OnKey
方法的调用。类似的东西Application.OnKey "+{TAB}", "ReverseTabIntercept"
。加号表示 shift 键,您可以在此处的文档中看到。