ComboBox.Dropdown方法仅显示一个列表项

时间:2017-07-26 19:49:29

标签: excel vba excel-vba combobox

我在excel(vba)中使用了一个ComboBox,它根据键入的内容(接近匹配)将项目添加到列表中,这样如果他们输入的内容已经存在于数据范围内,他们就可以看到它并单击。

除了应该显示列表的方法ComboBox1.DropDown之外,这一切都正常。不幸的是,它只显示一个带滚动按钮的项目。单击下拉按钮或按f4可显示由框的属性确定的正确行数。

我搜索并搜索过任何线索,如何自动显示列表中的所有项目?

这是我关于SO的第一个问题,请告知是否标记为无意义。

编辑:ActiveX控件,.listRows和.listFillRange似乎没有帮助

2 个答案:

答案 0 :(得分:0)

我一直在创建列表的自定义Sub中调用.DropDown,我需要更改它,因此它现在是ComboBox1_Change()中的最后一行。

不确定为什么它在_change()中的行为与我在Sub中的行为不同(由_change()调用)!

我认为这实际上与使用.clear方法然后调用.Dropdown相关,它不会重新计算要显示的行数。我可能需要将它们单独保留在分别感谢您的回复@PatricK

编辑:未解决,它现在可以正常使用第一个“更改”更多字母输入导致​​列表的其余部分保持未清除,而第一行更新并具有滚动按钮​​。我希望我确切地知道这些方法的编写方式和执行时间。

答案 1 :(得分:0)

Sub ChangeColour()

    Dim rCell As Range
    Dim m As Integer, vSplit

    With Sheets("BU")
        For Each rCell In .Range("I5", .Range("i" & Rows.Count).End(xlUp))
            vSplit = Split(rCell, ".")
            m = vSplit(1)
            If m < Month(Date) Then
                rCell.Interior.Color = vbGreen
            ElseIf m > Month(Date) Then
                rCell.Interior.Color = vbYellow
            Else
                rCell.Interior.Color = vbWhite
            End If
        Next rCell
    End With

End Sub

这段代码似乎可以解决问题,至少有一行显示,如果删除项目,列表会变短,不像以前那样。