条件Tab键顺序取决于特定单元格中的数据

时间:2013-08-20 14:47:01

标签: excel vba syntax tabs

我在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

{等...}

我在将这种意义写入代码表时遇到了麻烦。

1 个答案:

答案 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