Excel VBA组合框不允许从列表中选择特定项
我的工作表中有一个带有动态搜索的组合框,动态搜索是通过在另一个工作表的列表中搜索键入的字母来完成的。通过excel公式进行搜索。列表是一个定义的范围,然后组合框listfillrange被设置为命名范围。 当我输入时,下拉列表打开,对于某些项目,组合框允许我从列表中选择,对于其他项目,选择将随着我的选择而消失。我试图弄明白为什么这些东西消失了。这个列表有10000个条目,所以它的运行速度有点慢,但我不确定这是否是问题所在 我怎样才能解决这样的问题?有没有办法为下拉列表中的鼠标单击选择定义变量 提前感谢,, 大理 这是我的代码:Excel VBA组合框不允许从列表中选择特定项,vba,excel,combobox,Vba,Excel,Combobox,我的工作表中有一个带有动态搜索的组合框,动态搜索是通过在另一个工作表的列表中搜索键入的字母来完成的。通过excel公式进行搜索。列表是一个定义的范围,然后组合框listfillrange被设置为命名范围。 当我输入时,下拉列表打开,对于某些项目,组合框允许我从列表中选择,对于其他项目,选择将随着我的选择而消失。我试图弄明白为什么这些东西消失了。这个列表有10000个条目,所以它的运行速度有点慢,但我不确定这是否是问题所在 我怎样才能解决这样的问题?有没有办法为下拉列表中的鼠标单击选择定义变量 提
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
尽管我不能评论你在做什么,因为你的搜索已经完成了,就像你提到的excel公式一样。我知道通过组合框使用数据验证非常快。我使用的方法就是这样,速度非常快。它在大约15k行长的验证范围内几乎是瞬时的。它最大的优点是它提供了自动完成功能。因此,当您在组合框中键入该值而该值不在列表中时,与一个字符之前匹配的条目将消失。这是一个很好的视觉提示,无论您的选择是否有效。当然,你仍然可以用通常的方式使用下拉框。唯一不好的一面是,按照提供的链接中的代码,您必须双击以进入自动完成模式。尽管我无法对您的操作进行评论,因为您的搜索是按照您提到的excel公式进行的。我知道通过组合框使用数据验证非常快。我使用的方法就是这样,速度非常快。它在大约15k行长的验证范围内几乎是瞬时的。它最大的优点是它提供了自动完成功能。因此,当您在组合框中键入该值而该值不在列表中时,与一个字符之前匹配的条目将消失。这是一个很好的视觉提示,无论您的选择是否有效。当然,你仍然可以用通常的方式使用下拉框。唯一的缺点是,按照提供的链接中的代码,您必须双击才能进入自动完成模式。请添加一些数据示例或屏幕截图以及您的代码。那么您使用的控件类型和代码在哪里?我的意思是:ComboBox1和所有按钮是ActiveX控件还是窗体控件?PS是放置ComboBox1的工作表的名称吗?PS工作表属于哪个工作簿?按钮放在哪些工作表中?打开的工作簿属于哪个工作簿?我只使用ActiveX控件,不使用表单。代码在一个名为Pharmasoft的工作表中,我在其中显示了一种google搜索字段,其中有一个按钮用于搜索和清除数据。PS是项目列表的位置,也是计算组合框列表的位置。打开的工作簿是为整个工作簿定义的。那么,另一个工作表是什么?请添加一些数据示例或屏幕截图以及您的代码。那么您使用的控件类型和代码在哪里?我的意思是:ComboBox1和所有按钮是ActiveX控件还是窗体控件?PS是放置ComboBox1的工作表的名称吗?PS工作表属于哪个工作簿?按钮放在哪些工作表中?打开的工作簿属于哪个工作簿?我只使用ActiveX控件,不使用表单。代码在一个名为Pharmasoft的工作表中,我在其中显示了一种google搜索字段,其中有一个按钮用于搜索和清除数据。PS是项目列表的位置,也是计算组合框列表的位置。打开的工作簿是为整个工作簿定义的。那么另一个工作表是什么?谢谢,但我使用的是可搜索字段,而不是自动完成。如果像Tom skuller和Tom Blum这样的特定作品有两个选项,我希望在键入Tom时两个选项都有。问题是,我在列表中看到两个名称,但我可以选择一个名称,但无法选择另一个名称。不知道这是否是错误的来源,但在更改ListValueRange时,您应该这样做:“ComboBox1.ListFillRange==DropDownList。”。您是否正在更改“DropDownList”?谢谢,但我使用的是可搜索字段,而不是自动完成。如果像Tom skuller和Tom Blum这样的特定作品有两个选项,我希望在键入Tom时两个选项都有。问题是,我在列表中看到两个名称,但我可以选择一个名称,但无法选择另一个名称。不知道这是否是错误的来源,但在更改ListValueRange时,您应该这样做:“ComboBox1.ListFillRange==DropDownList。”。您正在更改“下拉列表”吗?