2017-11-11 15 views
0

현재 사용자 양식을 사용하여 회사의 사용자가 내 부서로 보낼 주문을 작성하고 있습니다.콤보 상자 선택을 기반으로 레이블 및 텍스트 상자를 추가하는 방법

나는 다음을 해결하기 위해 고생하고있는 순간 나는 멈추게되었다.

나는 사업 상 제공되는 제품 목록을 가지고있는 콤보 박스를 보유하고 있습니다. 선택에 따라 나는 사용자가 예를 들어 데이터를 입력해야하는 레이블과 텍스트 상자를 추가 할 수 있기를 원합니다.

콤보 상자에서이 선택은 다음 이름, 필요한 날짜,

는 또한이 콤보 상자 선택에 특정 할 필요가 등 사용자의 위치를 ​​입력 경우

.

은 어떤 도움이 많이 주시면 감사하겠습니다 :)

UPDATE

사과, 내가 여기에 하나를 추가 내가 가지고있는 코드하지 않았다 기능에 대한 코드를하지 않았다한다.

Private Sub CommandButton1_Click() 
Windows("RFS User Form Mock.xlsm").Visible = True 
End Sub 

Private Sub LegendDefinition_Change() 
LegendDefinition.Locked = True 
End Sub 

Private Sub RequestList_Change() 
Dim i As Long, LastRow As Long 
    LastRow = Sheets("Definition").Range("A" & Rows.Count).End(xlUp).Row 
    For i = 2 To LastRow 
    If Sheets("Definition").Cells(i, "A").Value = (Me.RequestList) Then 
    Me.DefinitionBox = Sheets("Definition").Cells(i, "B").Value 
    End If 
    Next 
End Sub 

Private Sub RequestList_DropButtonClick() 
Dim i As Long, LastRow As Long 
    LastRow = Sheets("Definition").Range("A" & Rows.Count).End(xlUp).Row 
    If Me.RequestList.ListCount = 0 Then 
    For i = 2 To LastRow 
    Me.RequestList.AddItem Sheets("Definition").Cells(i, "A").Value 
    Next i 
    End If 
End Sub 

Sub UserForm_Initialize() 
    SiteList.List = Array("Birmingham", "Bristol", "Cardiff", "Chelmsford", "Edinburgh", "Fenchurch Street", "Glasgow", "Guernsey", "Halifax", "Homeworker", "Horsham", "Ipswich", "Jersey", "Leeds", "Leicester", "Lennox Wood", "Liverpool", "Manchester", "Peterborough", "Redhill", "Sunderland", "Madrid") 
End Sub 

Private Sub VLookUp_Change() 
VLookUp.Locked = True 
End Sub 

답변

0

질문을 게시 할 때 문제를 해결하기 위해 서있는 곳을 나타내는 코드를 제공해야합니다. 그럼에도 불구하고 당신에게 출발점을 줄 짧은 데모가 있습니다.

새 사용자 정의 폼을 작성하고 콤보 상자, 레이블 및 텍스트 상자를 입력하십시오. 이름이 ComboBox1, Label1 및 TextBox1인지 확인하십시오.

그런 다음 폼의 모듈에이 코드를 붙여 넣습니다

Option Explicit 

Private Sub ComboBox1_Change() 
    Dim bVisible As Boolean 

    'Only show the label and the textbox when the combo list index is 1, which corresponds to "Item 2". 
    'Note: bVisible = (ComboBox1.Text = "Item 2") would also work. 
    bVisible = (ComboBox1.ListIndex = 1) 
    Label1.Visible = bVisible 
    TextBox1.Visible = bVisible 
End Sub 

Private Sub UserForm_Layout() 
    'Populate the combo. 
    ComboBox1.AddItem "Item 1", 0 
    ComboBox1.AddItem "Item 2", 1 

    'Note: the code below could be removed by setting the corresponding 
    'design-time properties from the form designer. 
    ComboBox1.Style = fmStyleDropDownList 
    Label1.Visible = False 
    TextBox1.Visible = False 
End Sub 

그런 다음 폼을 표시하기 위해 F5 키를 누릅니다. 콤보에 "항목 2"가 표시 될 때만 레이블과 텍스트 상자가 표시됩니다. 공개 설정은 ComboBox1_Change 이벤트 처리기 내에서 수행됩니다.

콤보의 값에 따라 여러 컨트롤을 표시하거나 숨기려면 하나 이상의 Frame 컨트롤로 그룹화하고 대신 해당 프레임을 표시하거나 숨길 수 있습니다.

+0

코드가 도움이 되었습니까? 그러나 나는 충분한 사용자를 가지고 있지 않지만 사용자 인터페이스의 이미지를 넣을 것이다. 또한 동일한 콤보 박스와 함께 VLookup을 사용하고 있습니다. 콤보 박스는 RequestList라고합니다. –