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 

のほかに、リストは私がM、馬、月、マリアのように、タップしたすべての文字を覚えています。

三角形のボタンをクリックするだけで、選択する名前が表示され、新しい名前を書き込んだときに次の時間に名前を繰り返すことなくリストに入れることができます。ありがとうございました!

答えて

1

UserFormがUserFormInitialize eventで表示され、Change eventComboBoxではなく、コンボボックスに値を追加する必要があります。あなたのComboBox1_Change()イベントからこのセクションを削除

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 

終了: このような何かを試してみてください。


編集、Enterボタンで作業KeyDownイベントを使用する方法の簡単な例:

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'で表示し、次にEnterを押した後に 'ComboBox1_KeyDown event'で新しい項目を追加しようとします。 –

+0

はい、同意してください!しかし、私はコンボボックスが私がタップしたすべての手紙を思い出すことができるという問題に出会った。私はマリアに入るのと同じように、最後にM、マ、マール、メアリーを覚えています。あなたはそれについていくつかの考えを持っていますか? – Hiddenllyy

関連する問題