我在excel(vba)中使用了一个ComboBox,它根据键入的内容(接近匹配)将项目添加到列表中,这样如果他们输入的内容已经存在于数据范围内,他们就可以看到它并单击。
除了应该显示列表的方法ComboBox1.DropDown之外,这一切都正常。不幸的是,它只显示一个带滚动按钮的项目。单击下拉按钮或按f4可显示由框的属性确定的正确行数。
我搜索并搜索过任何线索,如何自动显示列表中的所有项目?
这是我关于SO的第一个问题,请告知是否标记为无意义。
编辑:ActiveX控件,.listRows和.listFillRange似乎没有帮助
答案 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
这段代码似乎可以解决问题,至少有一行显示,如果删除项目,列表会变短,不像以前那样。