Notice
Recent Posts
Recent Comments
관리 메뉴

Creative Thinking Warehouse To be Rich

[엑셀VBA] Type (사용자 정의 자료형) 사용하기 본문

Engineering (+investing insight)/3. 컴퓨터 시스템

[엑셀VBA] Type (사용자 정의 자료형) 사용하기

LASER - 기술통역가 2024. 2. 29. 21:45

고객 정보를 관리할 때 한 고객에 대해서 고객번호, 이름, 주소, 핸드폰 번호, 나이, 성별 등 여러 가지 요소를 저장해야 한다면 각각의 변수들을 따로 선언해야 합니다. 또 관리해야 할 고객이 여러 명인 경우에도 각각의 변수를 배열로 선언해야 합니다. 예를 들면 고객 정보를 담는 변수를 다음과 같이 선언해야 합니다. 

 

dim no(100) as long 

dim name(100) as string 

dim address(100) as string 

dim cellphone(100) as string 

dim age(100) as integer

dim sex(100) as string 

 

하지만 이와 같은 방식의 코딩은 프로그래머를 힘들게 합니다. 

직관적이지 않을 뿐더 변수를 다루기가 번거롭습니다. 

그래서 여러 개의 변수를 하나의 묶음으로 처리할 수 있도록 Type이라는 형식을 이용하는 것이 훨씬 편리합니다.

Type은 프로그래밍 언어에서 구조체(Structure)라고 부르는 형식이며, 하나 이상의 여러 변수를 포함하는 사용자 정의 데이터 형식입니다. 

위에서 예로 든 각각의 배열문을 Type 형식으로 변환해 보겠습니다. 

Type 은 시트의 코드창에 작성하지 않고 반드시 모듈을 삽입한 다음 해당 모듈에 작성해야 합니다. 

자료를 담기 위한 사용자 정의 형식의 변수 선언이기 때문에 모듈에 선언하는 것입니다. 

모듈은 일종의 중립 지대와 같은 곳으로 모듈에 코드를 작성하면 시트 코드창이나 엑셀안의 다른 곳에서도 불러 쓸 수 있습니다. 전역 변수의 선언이나 Type 형식의 선언을 사용할 때, 그리고 타이머 등을 설정할 때, 해당 기능이나 변수를 공통적으로 사용하기 위해서 모듈을 사용합니다. 

 

Type Client
	no As Long
    name As Sring 
    address As String 
    cellphone As String 
    age As Integer 
    sex As String 
End Type

 

Client라는 Type을 선언하고 이 안에 고객번호, 이름, 주소 등의 변수를 선언합니다. 

이제 100명의 고객 관리를 위해 변수를 만들어야 할 때 Type을 이용해 간단하게 선언하면 됩니다. 

아래 코드는 모듈이 아닌 Sheet1의 코드창에 작성합니다. 

Sub test()
	Dim MyClient(100) As Client 
    
    MyClient(0).no = 1
    MyClient(0).name = "홍길동"
    MyClient(0).address = "서울 종로구" 
    MyClient(0).cellphone = "010-123-4567"
    MyClient(0).age = 40 
    MyClient(0).sex = "Male" 
    
    MsgBox MyClient(0).no & " 번째 고객 정보" & vbCr & _ 
    	"이름: " & MyClient(0).name & vbCr & _ 
        "주소: " & MyClient(0).address & vbCr & _ 
        "핸드폰:" & MyClient(0).cellphone & vbCr & _ 
        "나이: " & MyClient(0).age & vbCr & _ 
        "성별: " & MyClient(0).sex 
End Sub