通过Tab键启用Excel表单导航

时间:2015-03-09 17:55:45

标签: excel vba activex

我在excel文档中放置了几个activeX按钮和组合框。现在,要从一个对象转到另一个对象,我必须用鼠标选择下一个对象。我希望能够只按Tab键从一个组合框转到另一个组合框。有没有人对此有任何想法?

1 个答案:

答案 0 :(得分:0)

您可以编写KeyDown事件并查找Tab,然后激活您想要的任何控件。这是一个示例,其中工作表和选项卡上有三个组合框, shift + 选项卡可用于在它们之间导航。

Private Sub ComboBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)

    If KeyCode = vbKeyTab Then
        NavOle Me.OLEObjects(Me.ComboBox1.Index), Shift
    End If

End Sub

Private Sub ComboBox2_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)

    If KeyCode = vbKeyTab Then
        NavOle Me.OLEObjects(Me.ComboBox2.Index), Shift
    End If

End Sub

Private Sub ComboBox3_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)

    If KeyCode = vbKeyTab Then
        NavOle Me.OLEObjects(Me.ComboBox3.Index), Shift
    End If

End Sub

Private Sub NavOle(ByRef OleActive As OLEObject, Shift As Integer)

    If Shift = 1 Then
        If OleActive.Index = 1 Then
            Me.OLEObjects(Me.OLEObjects.Count).Activate
        Else
            Me.OLEObjects(OleActive.Index - 1).Activate
        End If
    Else
        If OleActive.Index = Me.OLEObjects.Count Then
            Me.OLEObjects(1).Activate
        Else
            Me.OLEObjects(OleActive.Index + 1).Activate
        End If
    End If

End Sub

如果您不想在导航方案中包含每个OLEObject,则会变得更加复杂。