오늘은 VBA 폼을 잘 다루기 위한 연습 문제입니다. 구현할 예제는 단위 변환 기능을 하는 프로그램입니다. 2개의 리스트 박스에 각 단위를 넣고 왼쪽에서 오른쪽으로 값을 변환하는 것입니다. 변환할 단위는 길이 값입니다. 내부는 2차원 배열과 For 반복문을 이용해서 구현하였습니다.
▼ 먼저 폼을 추가합니다. 그리고 단위 변환을 위한 화면을 구성합니다. 상단에는 리스트 박스 두 개와 아래에 변환 값을 입력하고 표현할 텍스트 박스를 추가합니다.
▼ 화면 구성이 끝났다면 소스를 입력해서 기능을 구현해야겠죠. 폼에서 오른 마우스를 눌러 [코드 보기] 메뉴를 선택합니다.
▼ 폼이 뜨면 실행하는 초기화 함수부터 구현합니다. 왼쪽 콤보박스에서 UserForm 과 오른쪽 콤보박스에서 Initialize 를 선택합니다. 그럼 초기화 함수 UserForm_Initialize() 함수가 자동으로 생성됩니다.
※ 아래는 참고하면 좋을 만한 글들의 링크를 모아둔 것입니다. ※ ▶ 엑셀 VBA 단위 변환 사용자 정의 폼 만들기 ▶ 엑셀 VBA 반복문을 이용해서 폼에 있는 전체 컨트롤 제어하기 ▶ 엑셀(Excel) VBA - 사용자 정의 폼으로 로그인 기능 만들기 1부 ▶ 엑셀(Excel) VBA - 사용자 정의 폼으로 로그인 기능 만들기 2부 ▶ 엑셀(Excel) VBA - 사용자정의 폼의 타이틀바에서 X 버튼 제어하기 |
▼ 함수의 내용은 다음과 같습니다. 폼 화면 상단에 있는 두 개의 리스트 박스를 변환할 단위로 채웁니다. 그리고 단위 값들을 2차원 배열로 만들어서 저장합니다.
Dim rates(0 To 3, 0 To 3) As Double, i As Integer, j As Integer Private Sub UserForm_Initialize() With ListBox1 .AddItem "밀리미터(mm)" .AddItem "센티미터(cm)" .AddItem "미터(m)" .AddItem "킬로미터(km)" End With With ListBox2 .AddItem "밀리미터(mm)" .AddItem "센티미터(cm)" .AddItem "미터(m)" .AddItem "킬로미터(km)" End With ListBox1.ListIndex = 0 ListBox2.ListIndex = 0 '' 배열에 단위 변환 값을 채운다 rates(0, 0) = 1 ' mm rates(0, 1) = 0.1 ' cm rates(0, 2) = 0.001 ' m rates(0, 3) = 0.000001 ' km rates(1, 0) = 10 rates(1, 1) = 1 rates(1, 2) = 0.01 rates(1, 3) = 0.00001 rates(2, 0) = 1000 rates(2, 1) = 100 rates(2, 2) = 1 rates(2, 3) = 0.001 rates(3, 0) = 1000000 rates(3, 1) = 100000 rates(3, 2) = 1000 rates(3, 3) = 1 End Sub |
▼ 폼을 시작한 결과는 다음과 같습니다. UserForm_Initialize() 함수가 실행되면서 리스트 박스에 단위가 들어갑니다.
▼ 이제 “변환” 버튼을 눌렀을 때 실행할 함수를 구현해야 합니다. UserForm_Initialize() 에서 저장한 2차원 배열의 값들을 꺼내서 변환하는 과정을 담고 있습니다. 좀더 이해가 쉽도록 동영상을 만들어서 올렸습니다. 참고하시기 바랍니다.
Private Sub CommandButton1_Click() For i = 0 To 3 For j = 0 To 3 If ListBox1.ListIndex = i And ListBox2.ListIndex = j Then TextBox2.Value = TextBox1.Value * rates(i, j) End If Next j Next i End Sub |
※ 아래는 참고하면 좋을 만한 글들의 링크를 모아둔 것입니다. ※ ▶ 엑셀 VBA 단위 변환 사용자 정의 폼 만들기 ▶ 엑셀 VBA 반복문을 이용해서 폼에 있는 전체 컨트롤 제어하기 ▶ 엑셀(Excel) VBA - 사용자 정의 폼으로 로그인 기능 만들기 1부 ▶ 엑셀(Excel) VBA - 사용자 정의 폼으로 로그인 기능 만들기 2부 ▶ 엑셀(Excel) VBA - 사용자정의 폼의 타이틀바에서 X 버튼 제어하기 |
'엑셀(Excel) > VBA' 카테고리의 다른 글
엑셀 VBA 선택한 영역 재조절 기능 Selection.Resize 함수 사용하기 (2) | 2023.03.17 |
---|---|
엑셀 VBA 문자가 포함된 숫자만 합치기 (0) | 2023.03.07 |
엑셀 VBA 16진수 > 10진수, 10진수 > 16진수 헥사값 알아오기 (2) | 2023.03.06 |
엑셀 VBA 반복문을 이용해서 폼에 있는 전체 컨트롤 제어하기 (0) | 2023.03.02 |
엑셀 VBA 레지스트리 키값 읽어오기 (1) | 2023.02.24 |
엑셀 VBA 시트에서 데이터 셀 영역 구하기 (2) | 2023.02.22 |
엑셀 VBA 매개변수 전달 방식 ByRef, ByVal 의 차이점 (0) | 2023.01.13 |
엑셀 VBA 반복문 For Next, For Each Next 사용하기 (0) | 2023.01.11 |