2016-10-20 3 views
0

Я сделал ComboBox, чтобы выбрать имя студента. Но когда я нажимаю кнопку треугольника, чтобы отобразить список имен, область выбора пуста:VBA_Combobox не может показывать список

enter image description here

Но когда я нажимаю несколько писем, список показывает вверх:

И список продолжайте добавлять имена, чтобы они становились длиннее и длиннее.

Вот код:

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 

Кроме того, когда я ввести новое имя, как Мария, список будет помнить каждую букву, я постучал, как М, Мо, Мары, Мэри.

Так что я просто хочу, когда я нажму кнопку треугольника, он может показать мне имена, которые нужно выбрать, и когда я напишу новое имя, он может поместить его в список следующие времена (без повторения имен). Спасибо!

ответ

1

Вам нужно добавить значения COMBOBOX ранее, когда UserForm проявляет с Initialize event из UserForm, но не с Change event из ComboBox. Попробуйте что-то вроде этого:

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 

End удалить этот раздел из вашего ComboBox1_Change() события.


Edit, простой пример того, как использовать 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 
+0

Ok я вижу! И как я могу добавить новые имена, пожалуйста? – Hiddenllyy

+1

вы можете попытаться сделать публикацию «MyArray» общедоступной, заполнить этот массив «Initialize event», как показано на рисунке, а затем попытаться добавить новый элемент с «ComboBox1_KeyDown event» после нажатия клавиши ввода. –

+0

Да, согласитесь! Но я столкнулся с проблемой, что combobox может запомнить каждое письмо, которое я прослушивал. Как будто я вхожу в Мэри, и он наконец вспомнит М, Ма, Мар и Мэри. У вас есть какое-то представление об этом? – Hiddenllyy

Смежные вопросы