VBA_Combobox 无法显示列表
VBA_Combobox can not show the list
我做了一个ComboBox
来选择学生的名字。
但是当我点击三角按钮显示名字列表时,选择区域是空的:
但是当我点击一些字母时,列表出现了:
名单还在不断增加名字,所以它变得越来越长。
代码如下:
Private Sub ComboBox1_Change()
Dim MyArray As Variant
Dim Ctr As Integer
Dim listvar As Variant
MyArray = Array("Denis", "Daniel", "Jimmy", "David", "Eric")
For Ctr = LBound(MyArray) To UBound(MyArray)
UserForm1.ComboBox1.AddItem MyArray(Ctr)
Next
listvar = ComboBox1.List
On Error Resume Next
If IsError(WorksheetFunction.Match(ComboBox1.Value, listvar, 0)) Then
ComboBox1.AddItem ComboBox1.Value
End If
Operateur = ComboBox1.Text
UserForm1.Show
End Sub
此外,当我输入一个新名字,比如 Mary,列表会记住我点击的每个字母,比如 M、Ma、Mar、Mary。
所以我只想当我点击三角形按钮时,它可以显示我要选择的名字,当我写一个新名字时,它可以将它放入列表中(不重复名字)。谢谢!
当用户窗体显示 UserForm
的 Initialize event
而不是 ComboBox
的 Change event
时,您需要更早地向组合框添加值。
尝试这样的事情:
Private Sub UserForm_Initialize()
Dim MyArray As Variant
Dim Ctr As Integer
Dim listvar As Variant
MyArray = Array("Denis", "Daniel", "Jimmy", "David", "Eric")
For Ctr = LBound(MyArray) To UBound(MyArray)
UserForm1.ComboBox1.AddItem MyArray(Ctr)
Next
End Sub
结束 从您的 ComboBox1_Change()
活动中删除此部分。
编辑,如何使用 KeyDown
事件与 Enter 按钮一起工作的简单示例:
Private Sub ComboBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 13 Then
Me.ComboBox1.AddItem Me.ComboBox1.Value
End If
End Sub
我做了一个ComboBox
来选择学生的名字。
但是当我点击三角按钮显示名字列表时,选择区域是空的:
但是当我点击一些字母时,列表出现了:
名单还在不断增加名字,所以它变得越来越长。
代码如下:
Private Sub ComboBox1_Change()
Dim MyArray As Variant
Dim Ctr As Integer
Dim listvar As Variant
MyArray = Array("Denis", "Daniel", "Jimmy", "David", "Eric")
For Ctr = LBound(MyArray) To UBound(MyArray)
UserForm1.ComboBox1.AddItem MyArray(Ctr)
Next
listvar = ComboBox1.List
On Error Resume Next
If IsError(WorksheetFunction.Match(ComboBox1.Value, listvar, 0)) Then
ComboBox1.AddItem ComboBox1.Value
End If
Operateur = ComboBox1.Text
UserForm1.Show
End Sub
此外,当我输入一个新名字,比如 Mary,列表会记住我点击的每个字母,比如 M、Ma、Mar、Mary。
所以我只想当我点击三角形按钮时,它可以显示我要选择的名字,当我写一个新名字时,它可以将它放入列表中(不重复名字)。谢谢!
当用户窗体显示 UserForm
的 Initialize event
而不是 ComboBox
的 Change event
时,您需要更早地向组合框添加值。
尝试这样的事情:
Private Sub UserForm_Initialize()
Dim MyArray As Variant
Dim Ctr As Integer
Dim listvar As Variant
MyArray = Array("Denis", "Daniel", "Jimmy", "David", "Eric")
For Ctr = LBound(MyArray) To UBound(MyArray)
UserForm1.ComboBox1.AddItem MyArray(Ctr)
Next
End Sub
结束 从您的 ComboBox1_Change()
活动中删除此部分。
编辑,如何使用 KeyDown
事件与 Enter 按钮一起工作的简单示例:
Private Sub ComboBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 13 Then
Me.ComboBox1.AddItem Me.ComboBox1.Value
End If
End Sub