2017-12-31 69 views
0

일부 텍스트 상자와 진행 단추로 Userform2를 만들 수 있습니까? Userform 2는 다른 userfomr1에서 선택된 값 (체크 박스)을 기반으로 만들어집니다.VBA : USerform - 일부 확인란을 기반으로 사용자 정의 폼을 만드는 방법

예 1 - 사용자는 모든 필드를 선택

enter image description here

는 UserForm2가 Userfomr1으로부터 선택된 값에 기초하여 생성된다.

enter image description here

+0

사용자 관점에서 볼 때, 완전히로드 된 화면 2로 표시 한 다음 관심이없는 필드를 공백으로 남겨 둘 수있는 옵션이 있습니다. 어쨌든 나에게 어리석은 것처럼 보입니다. 먼저 다른 양식을 검토하십시오. 하지만 그건 내 개인적인 의견이며, 모두가 항상 이상하다고 말하면 다른 사람들이 서로 다른 견해를 가질 수 있습니다. – YowE3K

+1

귀하의 답변은 "예, 가능합니다"입니다. 그러나 그것은 정말로 질문이 아닙니다. 맞습니까? –

답변

3

모방 이러한 정의 폼 구조 작업 예를 가질 : 당신이 매크로에 새로운 컨트롤의 적절한 이름을 감시 언급했듯이 Userform1 UserForm2

: TextBox1에, TextBox2를 ... CheckBox1, CheckBox2 ..., CommandButton1_Click .... ect

그래서 아래 코드는 양식과 함께 작동합니다.

이 코드를 새 모듈을 만들고 붙여 넣습니다

Sub formAction() 
' set them to invisible first, it can be done in control properties also. 
UserForm2.TextBox1.Visible = False 
UserForm2.TextBox2.Visible = False 
UserForm2.TextBox3.Visible = False 
UserForm2.TextBox4.Visible = False 

UserForm2.TextBox4.Left = 10 'example of controls movement 
UserForm2.TextBox4.Top = 10 'example of controls movement 

UserForm1.Show 'fire first userform 
End Sub 

삽입이 UserForm1을 코드로 :

Private Sub CommandButton1_Click() 
    If UserForm1.CheckBox1.Value = True Then UserForm2.TextBox1.Visible = True 
    If UserForm1.CheckBox2.Value = True Then UserForm2.TextBox2.Visible = True 
    If UserForm1.CheckBox3.Value = True Then UserForm2.TextBox3.Visible = True 
    If UserForm1.CheckBox4.Value = True Then UserForm2.TextBox4.Visible = True 
    UserForm2.Show 

End Sub 

또한 컨트롤의 크기를 조작하는 방법에 따라 적절한 크기를 결정하기 위해 자신을 정의 폼 수 있습니다 많은 선택권은 사용자에 의해 선정 될 것이다.

코드의 효율성을 높이기 위해이 예제를 위해 이러한 컨트롤을 반복하지 않았습니다.

+0

@ AdamC에 감사드립니다. 컨트롤 및 userform의 크기를 설정하는 방법을 배우기 위해 참조 할 수있는 사이트가 있는지 알려주시겠습니까.이 사이트는 정말 도움이 될 것이며 더 나은 모양과 느낌을 얻기 위해 내 프로젝트에 필요합니다 ... 감사합니다 다시 – dhanya

+0

그리고이 컨트롤을 사용하여 선택 필드를 정렬하는 데 도움이되는지 알고 싶습니다. 예를 들어, 확인란을 선택하면 3and4를 선택하거나 1과 3을 선택하면 필드가 정렬됩니다. – dhanya