VBA ActiveX动态ComboBox将ListRows减少为1

时间:2015-06-12 18:18:39

标签: excel vba excel-vba combobox activexobject

我正在尝试将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

代码似乎可以很好地过滤。但是下拉列表的高度只有一个单位高。我必须使用鼠标按钮滚动浏览这个小盒子。

为什么下拉列表缩小尺寸对我来说是一个谜,如果有任何光线可以抛出,我会很感激。也许有一些我忽略的环境。

由于

1 个答案:

答案 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了解有关动态设置此内容的详细信息。