【问题标题】:Enable Excel form navigation by tabbing through通过跳格启用 Excel 表单导航
【发布时间】:2015-05-11 00:04:15
【问题描述】:

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

【问题讨论】:

    标签: excel vba activex


    【解决方案1】:

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

    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,它会变得更加复杂。

    【讨论】:

      猜你喜欢
      • 2014-03-20
      • 1970-01-01
      • 1970-01-01
      • 2010-12-02
      • 2015-04-12
      • 1970-01-01
      • 1970-01-01
      • 2011-11-06
      • 1970-01-01
      相关资源
      最近更新 更多