Please Enable JavaScript!
Gon[ Enable JavaScript ]

엑셀 VBA 단위 변환 사용자 정의 폼 만들기

엑셀(Excel)/VBA
반응형

오늘은 VBA 폼을 잘 다루기 위한 연습 문제입니다. 구현할 예제는 단위 변환 기능을 하는 프로그램입니다. 2개의 리스트 박스에 각 단위를 넣고 왼쪽에서 오른쪽으로 값을 변환하는 것입니다. 변환할 단위는 길이 값입니다. 내부는 2차원 배열과 For 반복문을 이용해서 구현하였습니다.

 

 

 

먼저 폼을 추가합니다. 그리고 단위 변환을 위한 화면을 구성합니다. 상단에는 리스트 박스 두 개와 아래에 변환 값을 입력하고 표현할 텍스트 박스를 추가합니다.

엑셀 VBA 단위 변환 사용자 정의 폼 만들기

 

화면 구성이 끝났다면 소스를 입력해서 기능을 구현해야겠죠. 폼에서 오른 마우스를 눌러 [코드 보기] 메뉴를 선택합니다.  

엑셀 VBA 단위 변환 사용자 정의 폼 만들기

 

폼이 뜨면 실행하는 초기화 함수부터 구현합니다. 왼쪽 콤보박스에서 UserForm 과 오른쪽 콤보박스에서 Initialize 를 선택합니다. 그럼 초기화 함수 UserForm_Initialize() 함수가 자동으로 생성됩니다

엑셀 VBA 단위 변환 사용자 정의 폼 만들기
 ※ 아래는 참고하면 좋을 만한 글들의 링크를 모아둔 것입니다.
엑셀 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() 함수가 실행되면서 리스트 박스에 단위가 들어갑니다

엑셀 VBA 단위 변환 사용자 정의 폼 만들기

 

이제 변환버튼을 눌렀을 때 실행할 함수를 구현해야 합니다. 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 단위 변환 사용자 정의 만들기
엑셀 VBA 반복문을 이용해서 폼에 있는 전체 컨트롤 제어하기
엑셀(Excel) VBA - 사용자 정의 폼으로 로그인 기능 만들기 1
엑셀(Excel) VBA - 사용자 정의 폼으로 로그인 기능 만들기 2
셀(Excel) VBA - 용자정의 폼의 타이틀바에서 X 버튼 제어하기
반응형
Posted by 녹두장군1
,