2017-12-26 2 views
0

아래 코드와 같이 loop combobox_change에 대한 간단한 명령이 있습니까?Multi Combobox Change Declaration

Private Sub ComboBox1_Change() 
    nkm = cmbslno.ListIndex + 1 
    Set wk = Sheets("kkm" & nkm) 
    TextBox1.Text = Application.WorksheetFunction.VLookup(ComboBox1, wk.Range("A33:B52"), 2, 0) 
End Sub 
Private Sub ComboBox2_Change() 
    nkm = cmbslno.ListIndex + 1 
    Set wk = Sheets("kkm" & nkm) 
    TextBox2.Text = Application.WorksheetFunction.VLookup(ComboBox2, wk.Range("A33:B52"), 2, 0) 
End Sub 
Private Sub ComboBox3_Change() 
    nkm = cmbslno.ListIndex + 1 
    Set wk = Sheets("kkm" & nkm) 
    TextBox3.Text = Application.WorksheetFunction.VLookup(ComboBox3, wk.Range("A33:B52"), 2, 0) 
End Sub 
Private Sub ComboBox4_Change() 
    nkm = cmbslno.ListIndex + 1 
    Set wk = Sheets("kkm" & nkm) 
    TextBox4.Text = Application.WorksheetFunction.VLookup(ComboBox4, wk.Range("A33:B52"), 2, 0) 
End Sub 

나는

for i = 1 to 15 
......... "code above" ..... 
next 
+1

1에서 15까지는 어떤 관련이 있습니까? 콤보 상자의 수는 15 개입니까? – QHarr

+0

예. 및 텍스트 상자 –

+0

이러한 양식의 일부입니까? – QHarr

답변

0

달성하고자하는 것은 절차를 사용하여 수행 할 수 있으며 15 번 호출 할 수 있습니다.

Sub MyChange() 
    For i = 1 to 15 
    Call ChangeCmb(i) 
    Next 
End Sub 

하위 호출 될 :

Private Sub ChangeCmb(index as Integer) 
    nkm = cmbslno.ListIndex + 1 
    Set wk = Sheets("kkm" & nkm) 
    Me.Controls("TextBox" & i).Text = Application.WorksheetFunction.VLookup(Me.Controls("ComboBox" & i), wk.Range("A33:B52"), 2, 0) 
End Sub 
+0

어디 콤보 박스입니까? –

+0

무엇을 의미합니까? –

0

컨트롤을 통해 루프를 알아보기 하나의 명령 줄에서 단순화하고 싶다. 다음은 루프에서 컨트롤과 상호 작용하는 기본 방법의 샘플입니다. 당신이 할 수있는

Dim cCont As Control 
    For Each cCont In Me.Controls 
     If TypeName(cCont) = "CheckBox" Then 
      Me.Controls("TextBox" & i) = False 
     End If 
    Next cCont 
    For Each cCont In Me.Controls 
     If TypeName(cCont) = "TextBox" Then 
      Me.Controls("TextBox" & i) = "whatever" 
     End If 
    Next cCont 
    For Each cCont In Me.Controls 
     If TypeName(cCont) = "ComboBox" Then 
      Me.Controls("ComboBox" & i) = "whatever" 
     End If 
    Next cCont 

경우 컨트롤이 상당히 일관된 명명 규칙의 어떤 종류가있다. 당신의 예는 마치 그들이하는 것처럼 보이지만 b/c를 언급할만한 가치는 많은 사람들이 처음 시작했을 때 많은 생각을 그들의 통제에 두지 않는다는 것입니다.

또한 탭 스트립이있는 경우 탭 컨트롤이 해당 탭을 제어한다는 점에 유의하십시오.

+0

은 다음 코드에서 코드 작성을 반복하는 것과 동일하지 않습니까? 하나의 명령으로 많은 콤보 박스를 제어하고 싶습니다. –

0

루프에서 컨트롤 코드 (이벤트)를 할당 할 수 있습니다.

클래스를 사용하면 검색을 통해 이미 수백 가지 예제를 쉽게 찾을 수 있습니다.

특정 콤보 상자에서만 특정 동작을 수행해야하는 경우 루프에서 컨트롤의 이름이나 태그를 테스트 할 수 있습니다.

클래스와 함께 좋은 점은 이벤트를 한 번만 작성한 후 거의 무제한의 컨트롤에 할당 할 수 있다는 것입니다.

영향을받는 컨트롤을 제한하는 다른 방법은 컨테이너에 넣는 것입니다.

+0

예제를 쓸 수 있습니까? –