Excel VBA组合框不允许从列表

时间:2017-01-22 10:39:12

标签: excel vba excel-vba combobox

我的工作表中有一个带有动态搜索的组合框,动态搜索是通过搜索另一个工作表上的列表中的键入字母来完成的。搜索由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

1 个答案:

答案 0 :(得分:0)

虽然我不能评论你正在做什么,因为你的搜索已经完成了你提到的excel公式。我知道通过组合框使用数据验证可以非常快。我使用的方法是按照这个page并且非常快。在大约15k行的验证范围内,它几乎是瞬间完成的。关于它的最好的部分是它提供自动完成。因此,当您键入组合框并且该值不在列表中时,匹配一个字符的条目将消失。无论您的选择是否有效,这都是一个很好的视觉提示。当然,您仍然可以按常规方式使用下拉框。唯一的缺点是,在提供的链接上编码时,您必须双击才能进入自动完成模式。