/ / Excel VBA 사용자 폼

Excel VBA 사용자 폼

컨트롤 추가 | 사용자 양식 표시 | 매크로 할당 | 사용자 정의 폼 테스트

이 장에서는 Excel VBA 사용자 폼. 우리가 생성 할 Userform은 다음과 같습니다.

Excel VBA 사용자 폼

컨트롤 추가

사용자 정의 폼에 컨트롤을 추가하려면 다음 단계를 수행하십시오.

1. Visual Basic Editor를 엽니 다. 프로젝트 탐색기가 보이지 않으면보기, 프로젝트 탐색기를 클릭하십시오.

2. Insert, Userform을 클릭하십시오. 도구 상자가 자동으로 나타나지 않으면보기, 도구 상자를 클릭하십시오. 화면은 다음과 같이 설정해야합니다.

Excel VBA의 사용자 폼 화면 설정

3. 아래 표에 나열된 컨트롤을 추가하십시오. 이 작업이 완료되면 이전에 표시된 Userform 그림과 일치해야합니다. 예를 들어 도구 상자에서 TextBox를 클릭하여 텍스트 상자 컨트롤을 만듭니다. 다음으로, 사용자 정의 폼의 텍스트 상자를 끌 수 있습니다. 자동차 프레임에 도착하면 두 개의 옵션 버튼을 배치하기 전에 먼저이 프레임을 그려야합니다.

4. 아래 표에 따라 컨트롤의 이름과 캡션을 변경하십시오. 이름은 Excel VBA 코드에서 사용됩니다. 자막은 화면에 나타나는 자막입니다. 컨트롤의 이름을 변경하는 것이 좋습니다. 이렇게하면 코드를 더 쉽게 읽을 수 있습니다. 컨트롤의 이름과 캡션을 변경하려면보기, 속성 창을 클릭하고 각 컨트롤을 클릭합니다.

제어 이름 표제
사용자 양식 DinnerPlannerUserForm 디너 플래너
텍스트 상자 NameTextBox
텍스트 상자 PhoneTextBox
리스트 박스 CityListBox
콤보 박스 DinnerComboBox
확인란 DateCheckBox1 6 월 13 일
확인란 DateCheckBox2 6 월 20 일
확인란 DateCheckBox3 6 월 27 일
CarFrame
옵션 버튼 CarOptionButton1
옵션 버튼 CarOptionButton2 아니
텍스트 상자 MoneyTextBox
스핀 버튼 MoneySpinButton
명령 단추 OKButton 승인
명령 단추 ClearButton 명확한
명령 단추 취소 버튼 취소
라벨 7 개 변경 필요 없음 이름 :, 전화 번호 : 등

참고 : 콤보 상자는 사용자가 항목을 선택하거나 자신의 선택을 채울 수있는 곳의 드롭 다운 목록입니다. 옵션 버튼 중 하나만 선택할 수 있습니다.

사용자 양식 표시

사용자 정의 폼을 표시하려면 워크 시트에 명령 단추를 놓고 다음 코드 줄을 추가하십시오.

Private Sub CommandButton1_Click()

DinnerPlannerUserForm.Show

End Sub

이제 Sub UserForm_Initialize를 만들겠습니다. 사용자 정의 폼에 Show 메서드를 사용하면이 하위가 자동으로 실행됩니다.

1. Visual Basic Editor를 엽니 다.

2. 프로젝트 탐색기에서 DinnerPlannerUserForm을 마우스 오른쪽 단추로 클릭 한 다음 코드보기를 클릭하십시오.

3. 왼쪽 드롭 다운 목록에서 사용자 양식을 선택하십시오. 오른쪽 드롭 다운 목록에서 초기화를 선택하십시오.

4. 다음 코드 행을 추가하십시오.

Private Sub UserForm_Initialize()

"Empty NameTextBox
NameTextBox.Value = ""

"Empty PhoneTextBox
PhoneTextBox.Value = ""

"Empty CityListBox
CityListBox.Clear

"Fill CityListBox
With CityListBox
    .AddItem "San Francisco"
    .AddItem "Oakland"
    .AddItem "Richmond"
End With

"Empty DinnerComboBox
DinnerComboBox.Clear

"Fill DinnerComboBox
With DinnerComboBox
    .AddItem "Italian"
    .AddItem "Chinese"
    .AddItem "Frites and Meat"
End With

"Uncheck DataCheckBoxes

DateCheckBox1.Value = False
DateCheckBox2.Value = False
DateCheckBox3.Value = False

"Set no car as default
CarOptionButton2.Value = True

"Empty MoneyTextBox
MoneyTextBox.Value = ""

"Set Focus on NameTextBox
NameTextBox.SetFocus

End Sub

설명 : 텍스트 상자가 비어 있고 목록 상자와 콤보 상자가 채워지고 확인란이 선택 취소되어 있습니다.

매크로 할당

우리는 이제 Userform의 첫 번째 부분을 만들었습니다. 이미 깔끔하게 보이지만 사용자 폼의 명령 단추를 클릭하면 아무 것도 나타나지 않습니다.

1. Visual Basic Editor를 엽니 다.

2. 프로젝트 탐색기에서 DinnerPlannerUserForm을 두 번 클릭하십시오.

3. Money Spin 버튼을 더블 클릭하십시오.

4. 다음 코드 행을 추가하십시오.

Private Sub MoneySpinButton_Change()

MoneyTextBox.Text = MoneySpinButton.Value

End Sub

설명 :이 코드 행은 스핀 단추를 사용할 때 텍스트 상자를 업데이트합니다.

5. 확인 버튼을 두 번 클릭하십시오.

6. 다음 코드 행을 추가하십시오.

Private Sub OKButton_Click()

Dim emptyRow As Long

"Make Sheet1 active
Sheet1.Activate

"Determine emptyRow
emptyRow = WorksheetFunction.CountA(Range("A:A")) + 1

"Transfer information
Cells(emptyRow, 1).Value = NameTextBox.Value
Cells(emptyRow, 2).Value = PhoneTextBox.Value
Cells(emptyRow, 3).Value = CityListBox.Value
Cells(emptyRow, 4).Value = DinnerComboBox.Value

If DateCheckBox1.Value = True Then Cells(emptyRow, 5).Value = DateCheckBox1.Caption

If DateCheckBox2.Value = True Then Cells(emptyRow, 5).Value = Cells(emptyRow, 5).Value & " " & DateCheckBox2.Caption

If DateCheckBox3.Value = True Then Cells(emptyRow, 5).Value = Cells(emptyRow, 5).Value & " " & DateCheckBox3.Caption

If CarOptionButton1.Value = True Then
    Cells(emptyRow, 6).Value = "Yes"
Else
    Cells(emptyRow, 6).Value = "No"
End If

Cells(emptyRow, 7).Value = MoneyTextBox.Value

End Sub

설명 : 먼저 Sheet1을 활성화합니다. 다음으로 emptyRow를 결정합니다. 변수 emptyRow는 첫 번째 빈 행이며 레코드가 추가 될 때마다 증가합니다. 마지막으로, 사용자 정의 폼의 정보를 emptyRow의 특정 컬럼으로 전송합니다.

7. 지우기 단추를 두 번 클릭하십시오.

8. 다음 코드 줄을 추가합니다.

Private Sub ClearButton_Click()

Call UserForm_Initialize

End Sub

설명 :이 코드 행은 지우기 단추를 누르면 Sub UserForm_Initialize를 호출합니다.

9. 취소 버튼을 두 번 클릭하십시오.

10. 다음 코드 행을 추가하십시오.

Private Sub CancelButton_Click()

Unload Me

End Sub

설명 :이 코드 행은 취소 단추를 누르면 사용자 정의 양식을 닫습니다.

사용자 정의 폼 테스트

Visual Basic Editor를 끝내고 아래 표시된 레이블을 1 행에 입력하고 Userform을 테스트합니다.

결과:

사용자 정의 폼 테스트

또한 읽으십시오 :