社区,
有一种方法可以防止活动组合框在列表末尾(或开始)处按下向下箭头(或向上箭头)时失去焦点。如果有更好的方法来做到这一点(最好使用 MS 标准属性),请分享。
问题:当在 ComboBox 中的列表末尾时,如果您点击向下箭头,它会将您移动到物理上位于活动组合框下方的任何控件。反之亦然,因为位于组合框的顶部并点击向上箭头。这是草率和适得其反的。微软 Excel 2013。
解决方案:为了防止这种失去焦点,在用户窗体的 ComboBox 代码中,您可以输入以下内容:
Private Sub Item1_DropDown_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Select Case KeyCode
Case vbKeyDown
If Item1_DropDown.ListIndex = Item1_DropDown.ListCount - 1 Then
Item1_DropDown.ListIndex = Item1_DropDown.ListIndex - 1 'when at the bottom, stay in active combobox
Else: Item1_DropDown.ListIndex = Item1_DropDown.ListIndex 'if not at the bottom, keep moving down
End If
Case vbKeyUp
If Item1_DropDown.ListIndex = 0 Then 'when at the top, stay in active combobox
Item1_DropDown.ListIndex = 1
Else: Item1_DropDown.ListIndex = Item1_DropDown.ListIndex 'if not at the top, keep moving up
End If
End Select
' where "Item1_DropDown" is the name of my combobox
End Sub
好的,这就是我能够防止组合框在组合框列表的底部/顶部按下/向上时切换到不同控件的方式。
有谁知道更清洁的方法来做到这一点?也许一种不使用代码就能做到这一点的方法?