2016-10-20 4 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

당신은 사용자 정의 폼 ComboBoxChange eventUserFormInitialize 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 이벤트가 버튼을 입력 작업을 사용하는 방법의 간단한 예 :

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

좋아, 내가 볼! 새 이름을 어떻게 추가 할 수 있습니까? – Hiddenllyy

+1

당신은'MyArray' public으로 만들고, 그 배열을'Initialize event'로 채우고, 그 다음에'ComboBox1_KeyDown event'를 입력 한 후 새로운 항목을 추가하려고 시도 할 수 있습니다. –

+0

예, 동의합니다! 그러나 나는 combobox가 내가 쓴 모든 편지를 기억할 수있는 문제를 만났습니다. 나는 마리아에 들어가는 것처럼 마침내 마리아와 마리아와 마리아를 기억할 것입니다. 그 생각 좀 해? – Hiddenllyy

관련 문제