/ / Excel VBA 대화 형 사용자 폼

Excel VBA 대화 형 사용자 폼

아래에서 우리는 Excel VBA 그것은 대화 형 사용자 형식. 우리가 생성 할 Userform은 다음과 같습니다.

Excel VBA 대화 형 사용자 폼

설명: ID 텍스트 상자에 값을 입력 할 때마다 Excel VBA는 해당 레코드를로드합니다. 편집 / 추가 단추를 클릭하면 Excel VBA가 시트의 레코드를 편집하거나 ID가 아직없는 경우 레코드를 추가합니다. 지우기 단추는 모든 텍스트 상자를 지 웁니다. 닫기 버튼은 사용자 정의 폼을 닫습니다.

이 사용자 정의 폼을 만들려면 다음 단계를 수행하십시오.

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

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

Excel VBA의 사용자 폼 화면 설정

삼. 레이블, 텍스트 상자 (맨 위, 두 번째 첫 번째 등) 및 명령 단추를 추가하십시오. 이 작업이 완료되면 이전에 표시된 Userform 그림과 일치해야합니다. 예를 들어 도구 상자에서 TextBox를 클릭하여 텍스트 상자 컨트롤을 만듭니다. 다음으로, 사용자 정의 폼의 텍스트 상자를 끌 수 있습니다.

4. 컨트롤의 이름과 캡션을 변경할 수 있습니다. 이름은 Excel VBA 코드에서 사용됩니다. 자막은 화면에 나타나는 자막입니다. 컨트롤의 이름을 변경하는 것이 좋지만이 예제에는 컨트롤이 몇 개 있기 때문에 여기서는 필요하지 않습니다. 레이블, 텍스트 상자 및 명령 단추의 캡션을 변경하려면보기, 속성 창을 클릭하고 각 컨트롤을 클릭하십시오.

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

Private Sub CommandButton1_Click()

UserForm1.Show

End Sub

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

6. Visual Basic Editor를 엽니 다.

7. 프로젝트 탐색기에서 UserForm1을 마우스 오른쪽 단추로 누른 다음 코드보기를 누릅니다.

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

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

Private Sub UserForm_Initialize()

TextBox1.SetFocus

End Sub

설명 :이 코드 행은 첫 번째 텍스트 상자에 포커스를 설정합니다. 사용자 정의 폼이로드 될 때 시작하려는 위치입니다.

우리는 이제 Userform의 첫 번째 부분을 만들었습니다. 이미 깔끔하게 보이지만 ID 텍스트 상자에 값을 입력하거나 명령 단추 중 하나를 클릭하면 아무 것도 나타나지 않습니다.

10. 프로젝트 탐색기에서 UserForm1을 마우스 오른쪽 단추로 누른 다음 코드보기를 누릅니다.

11. 왼쪽 드롭 다운 목록에서 TextBox1을 선택하십시오. 오른쪽 드롭 다운 목록에서 변경을 선택하십시오.

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

Private Sub TextBox1_Change()

GetData

End Sub

13. 프로젝트 탐색기에서 UserForm1을 두 번 누릅니다.

14. 편집 / 추가 명령 단추를 두 번 클릭하십시오.

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

Private Sub CommandButton1_Click()

EditAdd

End Sub

16. 지우기 명령 단추를 두 번 클릭하십시오.

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

Private Sub CommandButton2_Click()

ClearForm

End Sub

설명 :이 서브 섹션은 우리가 생성하려고하는 다른 서브 섹션을 초 단위로 호출합니다.

18. 닫기 명령 단추를 두 번 클릭하십시오.

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

Private Sub CommandButton3_Click()

Unload Me

End Sub

설명 :이 코드 행은 사용자 정의 폼을 닫습니다.

잠수정을 만드는 시간. Sub에 대한 자세한 내용은 Function 및 Sub 장을 참조하십시오. 바쁘다면 다음 하위 모듈을 모듈에 배치하기 만하면됩니다 (Visual Basic Editor에서 삽입, 모듈 클릭).

20. 먼저, Integer 유형의 세 변수와 Boolean 유형의 한 변수를 선언하십시오. 일반 선언 섹션 (모듈 맨 위에 있음)에서 변수를 선언하십시오. 이 방법을 사용하면 변수를 한 번만 선언하면 여러 하위에 변수를 사용할 수 있습니다.

Dim id As Integer, i As Integer, j As Integer, flag As Boolean

21. GetData 하위를 추가하십시오.

Sub GetData()

If IsNumeric(UserForm1.TextBox1.Value) Then
    flag = False
    i = 0
    id = UserForm1.TextBox1.Value

    Do While Cells(i + 1, 1).Value <> ""

        If Cells(i + 1, 1).Value = id Then
            flag = True
            For j = 2 To 3
                UserForm1.Controls("TextBox" & j).Value = Cells(i + 1, j).Value
            Next j
        End If

        i = i + 1

    Loop

    If flag = False Then
        For j = 2 To 3
            UserForm1.Controls("TextBox" & j).Value = ""
        Next j
    End If

Else
    ClearForm
End If

End Sub

설명: ID 텍스트 상자에 숫자 값이 있으면 Excel VBA는 ID를 검색하고 해당 레코드를로드합니다. Controls Collection을 사용하여 텍스트 상자를 쉽게 반복 할 수 있습니다. Excel VBA에서 ID를 찾을 수없는 경우 (플래그가 여전히 거짓이면) 두 번째 및 세 번째 텍스트 상자가 비 웁니다. ID 텍스트 상자에 숫자 값이 없으면 Excel VBA는 ClearForm 하위를 호출합니다.

22. ClearForm 하위를 추가합니다.

Sub ClearForm()

For j = 1 To 3
    UserForm1.Controls("TextBox" & j).Value = ""
Next j

End Sub

설명 : Excel VBA는 모든 텍스트 상자를 지 웁니다.

23. EditAdd 하위를 추가하십시오.

Sub EditAdd()

Dim emptyRow As Long

If UserForm1.TextBox1.Value <> "" Then
    flag = False
    i = 0
    id = UserForm1.TextBox1.Value
    emptyRow = WorksheetFunction.CountA(Range("A:A")) + 1

    Do While Cells(i + 1, 1).Value <> ""

        If Cells(i + 1, 1).Value = id Then
            flag = True
            For j = 2 To 3
                Cells(i + 1, j).Value = UserForm1.Controls("TextBox" & j).Value
            Next j
        End If

        i = i + 1

    Loop

    If flag = False Then
        For j = 1 To 3
            Cells(emptyRow, j).Value = UserForm1.Controls("TextBox" & j).Value
        Next j
    End If

End If

End Sub

설명: ID 텍스트 상자가 비어 있지 않으면 Excel VBA는 시트의 레코드를 편집합니다 (앞에서 보았 듯이 레코드를로드하는 것과 반대입니다). Excel VBA에서 ID를 찾을 수 없으면 (플래그가 여전히 False 임) 레코드를 다음 빈 행에 추가합니다. 변수 emptyRow는 첫 번째 빈 행이며 레코드가 추가 될 때마다 증가합니다.

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

Excel VBA 대화 형 사용자 폼

또한 읽으십시오 :