隐藏ComboBox的DropDown列表而不会失去焦点

时间:2018-03-13 17:30:27

标签: vba excel-vba combobox excel

我创建了一个类似于Google搜索的用户表单。我希望下拉显示/隐藏取决于有多少字母值。

喜欢这个..

If Len(ComboBox1.Value) > 4 Then
    ComboBox1.DropDown
Else
    'ComboBox.DroppedDown = False  (non-existent method)
End If

这个问题有很多版本,大多数都会导致改变焦点,但这应该在输入框时发生。我发现很难相信它是不可能的..

编辑:问题涉及隐藏下面的列表,而不是侧面的箭头 - 因为它被设置为始终隐藏 - 列表应根据值的长度隐藏/取消隐藏。

1 个答案:

答案 0 :(得分:0)

我能得到的最接近的是这个,但出于某种原因,如果你删除了字符,它就不会更新。另外,只有超过5个字符才开始工作!编辑 - 根据Mistella的评论进行修改。

Private Sub ComboBox1_Change()

If Len(Me.ComboBox1.Value) > 3 Then
    Me.ComboBox1.ShowDropButtonWhen = fmShowDropButtonWhenAlways
Else
    Me.ComboBox1.ShowDropButtonWhen = fmShowDropButtonWhenNever
End If

End Sub


Private Sub UserForm_Initialize()

With Me.ComboBox1
    .AddItem "A"
    .AddItem "B"
    .AddItem "C"
    .AddItem "D"
    .ShowDropButtonWhen = fmShowDropButtonWhenNever
End With

End Sub