我在Excel中有一份订单,有6类设备需要订购。我正在尝试制作一个自定义Tab键顺序,将活动单元格移动到适用于所选特定类型设备的下一列。例如,如果用户选择我想从列E移动到F的单位,则跳过G,H和&我直接转到K.之后我想转到下一行的E列。我只希望此Tab键顺序适用于在B列中具有数字的行。
它的工作方式如下:
如果活动行的列b中的单元格> = 1则
如果活动行的列e中的单元格为空,请转到列e,然后
如果活动行的列e中的单元格等于单位制表符顺序E,F,K,M,则下一行E 否则,如果活动行的列e中的单元格等于主席标签顺序E,F,G,H,I,K,M下一行E
{等...}
我在将这种意义写入代码表时遇到了麻烦。
答案 0 :(得分:0)
好吧,如果我理解正确,你想用你自己的功能替换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,而不是正常的右侧单元格。
您可以使用if语句对此进行扩展。例如下面的示例,其中选项卡正常运行,除非您将光标放在单元格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"
这样的东西。加号表示移位键can see in the documentation here。