我的工作表中有一个带有动态搜索的组合框,动态搜索是通过搜索另一个工作表上的列表中的键入字母来完成的。搜索由excel公式完成。列表是定义的范围,然后组合框列表填充范围设置为命名范围。 当我输入下拉列表打开时,对于某些项目,组合框允许我从列表中进行选择,而对于其他项目,选择将在我选择时消失。我试着想为什么这些物品会消失。列表很长(10,000项),所以它的工作很慢,但我不确定这是不是问题。
我该如何解决这个问题?有没有办法从下拉列表中为鼠标点击选择定义变量?
提前致谢, 塔利
这是我的代码:
Private Sub ComboBox1_Change()
Sheets("PS").EnableCalculation = True
ComboBox1.ListFillRange = "DropDownList"
ComboBox1.DropDown
End Sub
Private Sub CommandButton21_Click()
Dim PS As Worksheet
Application.ScreenUpdating = False
Application.ErrorCheckingOptions.BackgroundChecking = False
Sheets("PharmaSoft").Select
Set PS = Sheets("PS")
SelectionA = PS.Range("J2").Value
If ComboBox1.Value = SelectionA Then
Range("J19") = "Pharmacy purchase price"
Range("N19") = PS.Range("K2")
Range("O19") = "ILS"
Range("J21") = "Pharmacy selling price Incl.VAT"
Range("N21") = PS.Range("L2")
Range("O21") = "ILS"
Range("J23") = "Package size"
Range("N23") = PS.Range("M2")
Range("J19:O23").Select
With Selection.Font
.ThemeColor = xlThemeColorDark1
.TintAndShade = 0
End With
Selection.Font.Bold = True
Application.ScreenUpdating = True
Range("N19").Errors.Item(1).Ignore = True
Range("N21").Errors.Item(1).Ignore = True
Range("N23").Errors.Item(1).Ignore = True
Else
MsgBox "Please select a product", vbCritical, "Error"
End If
Sheets("PS").EnableCalculation = False
End Sub
Private Sub CommandButton22_Click()
Application.ScreenUpdating = False
Sheets("PharmaSoft").Select
ComboBox1.Value = Null
Range("J19:O23").Value = Null
Application.ScreenUpdating = True
End Sub
Also the code for the workbook:
Private Sub Workbook_Open()
Sheets("PharmaSoft").Select
Application.ScreenUpdating = False
Sheets("PharmaSoft").ComboBox1.Value = Null
Range("J19:O23").Value = Null
Application.ScreenUpdating = True
End Sub
答案 0 :(得分:0)
虽然我不能评论你正在做什么,因为你的搜索已经完成了你提到的excel公式。我知道通过组合框使用数据验证可以非常快。我使用的方法是按照这个page并且非常快。在大约15k行的验证范围内,它几乎是瞬间完成的。关于它的最好的部分是它提供自动完成。因此,当您键入组合框并且该值不在列表中时,匹配一个字符的条目将消失。无论您的选择是否有效,这都是一个很好的视觉提示。当然,您仍然可以按常规方式使用下拉框。唯一的缺点是,在提供的链接上编码时,您必须双击才能进入自动完成模式。