在我的用户窗体中是一个ComboBox,此ComboBox显示一个包含100多个值的列表。如果我开始在ComboBox中键入一些字母,我希望下拉列表将自动仅显示具有键入字母的值(到目前为止,效果很好)。但是,如果我选择一个值,则ComboBox将保持为空。
这是我的ComboBox代码:
Private Sub ComboBox1_Change()
Worksheets("DataSheet").Range("B1").Value = dbCustomer.Value
dbCustomer.RowSource = "=ddCustomer" 'Named Range
End Sub
在工作表“ DataSheet”的“ D”列中,我写了公式:
=IFERROR(INDEX(Customer;AGGREGAT(15;6;(ROW(Customer)-1)/(--(SEARCH($B$1;Customer)>0));ZEILE()-1);1);"")
我保存的命名范围“ ddCustomer”:
=DataSheet!$D$2:INDEX(DataSheet!$D$2:$D$105;COUNTIF(DataSheet!$D$2:$D$105;"?*"))
我必须更改什么,我选择的值才会显示在ComboBox中?
编辑
可以找到解决方案,也许它不是完美的,但对我来说很好用。
Private Sub dbCustomer_Change()
Dim customer As Object
Set customerValue = Worksheets("DataSheet").Range("C2:C479").Find(dbCustomer.Value, LookIn:=xlValues, LookAt:=xlWhole)
If customerValue Is Nothing Then
dbCustomer.Clear
GoTo FillDB
Else
Worksheets("DataSheet").Range("B1").Value = ""
Exit Sub
End If
FillDB:
Worksheets("DataSheet").Range("B1").Value = dbCustomer.Value
For Each customer In Worksheets("DataSheet").Range("D2:D479")
If customer <> "" Then
dbCustomer.AddItem customer.Value
End If
Next
End Sub