엑셀 VBA 상수 및 변수에 대해 앞에서 알아봤습니다. 아래 링크를 클릭하여 이전 글을 확인해 보시기 바랍니다. 변수에는 개체 변수라는 것도 있습니다. 개체 변수는 변수 형태를 VBA에서 사용하는 개체를 변수 형식으로 사용하는 것입니다. 이번에는 개체 변수에 대해 알아보고자 합니다.
1. 개체 변수
앞에서 변수는 정수형, 실수형과 같은 값이나 Bool 형태의 True, False 값 등을 저장할 수 있으며 이를 위해 메모리를 값의 크기에 맞게 설정해 놓는다고 알아봤습니다. 그런데 변수는 이런 값뿐만 아니라 VBA에서 사용하는 개체 형태로 저장할 수 있으며 그 값에 맞게 메모리를 설정할 수 있습니다. 변수를 VBA 개체 형태로 선언한 변수를 개체 변수라고 합니다. 하지만 개체 변수는 변수를 선언하였다는 말보다는 개체를 할당하였다는 말로 표현합니다. 이유는 개체 변수는 선택한 개체와 연결되어 개체를 조작하기 때문에 이런 표현을 사용합니다.
개체 변수의 장점은 개체를 변수처럼 사용하므로 메모리에 저장되어 있게 됩니다. 이로 인해 처리 속도가 빠르다는 장점이 있습니다. 개체 변수를 사용하는 방법은 다음과 같습니다.
Dim 변수명 As 개체
Set 변수명 = 개체
Dim을 사용한 개체 변수 선언 방법은 앞에서 알아본 변수 선언 방법과 동일합니다. 변수의 형식을 개체로 선언하여 개체 변수를 선언합니다.
그런데, 다음 개체 변수 선언에는 Set을 사용하였습니다. VBA에서 변수에 값을 입력할 때는 let을 사용하였는데 개체 변수에 값을 입력할 때는 Set을 사용한다는 것을 주의하시기 바랍니다.
엑셀에서 셀 범위를 지정하여 이름 정의를 할 수 있습니다. 이를 VBA에서 개체 변수를 사용하여 변수로 연결할 수도 있습니다.
VBE 창을 열고 모듈을 생성한 후 아래와 같이 코딩을 합니다.
Public Sub 영업실적()
Dim 영업실적 As Range '영업실적이란 이름으로 개체 변수를 만들고 Range 개체에 연결
Set 영업실적 = Range("B2:B10") '개체 변수 영업실적에 B2:B10 셀 범위를 할당
End Sub
영업실적이라는 Range 개체 형태로 개체 변수를 만들어 B2:B10 셀 범위를 할당하는 코딩입니다.
2. 개체 변수 초기화
변수를 선언하면 변수에 값을 입력하여 초기화를 하여야 합니다. 개체 변수를 생성하게 되면 값이 비어있게 됩니다. 이 상태를 Nothing이라 하며 개체 값이 할당될 때까지 비워진 상태를 유지하게 됩니다.
위의 영업실적 개체 변수 코딩에서 Dim 영업실적 As Range로 개체 변수를 생성하였을 때 영업실적 개체 변수는 비워져 있는 Nothing 상태입니다. 다음 Set 명령을 사용하여 영업실적 개체 변수에 B2:B10 셀 범위를 할당하면서 초기화가 이루어집니다.
3. 배열 변수
배열 변수는 변수를 선언할 때 배열 형식으로 선언하여 한 변수에 여러 개의 값을 할당할 수 있는 변수입니다. 선언하는 방법은 다음과 같습니다.
Dim 배열 변수명(번호) As 데이터 형식
번호는 배열 변수의 방 번호로 생각하시면 되는데 배열 변수 번호는 0번부터 생성되며 지정한 번호까지 방을 만들게 됩니다. 가령 번호를 5로 준다면 배열 변수는 0번부터 5번까지 총 6개의 방이 생성되는 것입니다.
배열 변수에 대해 자세히 알아보기 위해 아래와 같은 코딩을 작성해 봅니다.
Public Sub 숫자()
Dim 숫자(4) As Integer
숫자(0) = 1
숫자(1) = 2
숫자(2) = 3
숫자(3) = 4
숫자(4) = 5
Range("B3").Value = 숫자(0)
End Sub
숫자라는 배열 변수를 선언하였으며 총 5개의 방을 만들어 1 ~ 5까지 입력하는 코드로 B3 셀에 숫자 배열 변수 0번 방에 입력되어 있는 1이 입력됩니다. 코드를 실행시키고 엑셀 시트를 보시면 B3 셀에 1이 입력되어 있는 것을 확인하실 수 있습니다.
여기서, 배열 방 번호를 0번이 아닌 1번부터 시작하고 싶으신 경우에는 다음과 같이 선언하시면 됩니다.
Dim 숫자(1 to 5) As Integer
숫자 배열 변수를 1번 방부터 5번 방까지 총 5개 생성하는 명령어로 위의 Dim 숫자(4) As Integer와 동일한 방 개수로 배열 변수를 생성하지만 시작하는 방 번호는 다르게 1번부터 시작하도록 선언하였습니다.
'엑셀 > VBA' 카테고리의 다른 글
Excel VBA ReDim 사용하지 않고 동적 배열변수 & Type문 사용하기 (0) | 2021.09.21 |
---|---|
엑셀 VBA 다차원 배열변수 및 동적 배열변수 알아보기 (0) | 2021.09.20 |
엑셀 VBA - Sub 프로시저 (0) | 2021.09.20 |
엑셀 VBA 개체에 단축 접근자 및 글로벌 개체를 이용하기 (0) | 2021.09.19 |
엑셀 개체 이벤트, 속성 및 메서드 알아보기 (0) | 2021.09.18 |