【发布时间】:2015-05-11 00:04:15
【问题描述】:
我在 Excel 文档中放置了几个 activeX 按钮和组合框。现在,要从一个对象转到另一个对象,我必须用鼠标选择下一个对象。我希望能够按 Tab 键从一个组合框转到另一个组合框。有人对此有任何想法吗?
【问题讨论】:
我在 Excel 文档中放置了几个 activeX 按钮和组合框。现在,要从一个对象转到另一个对象,我必须用鼠标选择下一个对象。我希望能够按 Tab 键从一个组合框转到另一个组合框。有人对此有任何想法吗?
【问题讨论】:
您可以编写 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,它会变得更加复杂。
【讨论】: