我正在尝试将VBA ComboBox下拉并仅显示与键入的字符串匹配或部分匹配的项目。
为此,我已经设置了一个ComboBox KeyUp事件管理器,如下所示:
Public Sub TempCombo_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Select Case KeyCode
Case 9
'If TAB is pressed, then move one place right
ActiveCell.Offset(0, 1).Activate
Case 13
'If Enter is pressed, then move one place down
ActiveCell.Offset(1, 0).Activate
Case Else
'Otherwise, filter the list from the already entered text
Dim x As Long
OriginalValue = Me.TempCombo.Value
'Remove items from the ComboBox list
If Me.TempCombo.ListCount > 0 Then
For i = 1 To Me.TempCombo.ListCount
Me.TempCombo.RemoveItem 0
Next
End If
'If any part of any element from the 'FullSource' array matches the so far typed ComboBox value, then include it in the list for dropdown
For x = 1 To UBound(FullSource)
Typed_Value = "*" & LCase(OriginalValue) & "*"
If LCase(FullSource(x)) Like Typed_Value Then
Me.TempCombo.Object.AddItem FullSource(x)
End If
Next
Me.TempCombo.Value = OriginalValue
Me.TempCombo.ListRows = 12
Me.TempCombo.DropDown
End Select
End Sub
代码似乎可以很好地过滤。但是下拉列表的高度只有一个单位高。我必须使用鼠标按钮滚动浏览这个小盒子。
为什么下拉列表缩小尺寸对我来说是一个谜,如果有任何光线可以抛出,我会很感激。也许有一些我忽略的环境。
由于
答案 0 :(得分:0)
您可以使用Me.TempCombo.Height = 15来设置高度。
如果它不起作用,您可能会遇到ActiveX控件不稳定问题。请参阅Excel VBA ComboBox DropDown Button Size--changed itself以使用表单控件而不是ActiveX。
Dynamically adjusting the width of a combobox in Excel VBA了解有关动态设置此内容的详细信息。