반응형
1차원 배열
배열 선언
Dim MyArray(0 To 9) As Integer
Dim MyArray(9) As Integer
위의 두 코드 중 어떤 방식을 선택하든, 0으로 초기화된 크기 10의 일차원 배열을 선언할 수 있습니다.
배열 값 사용
Debug.Print (MyArray(0))
위의 코드와 같이 선언한 배열 이름 우측에 괄호를 열고 인덱스 값을 작성하는 것으로 해당 값을 사용할 수 있습니다.
N차원 배열
배열 선언
'2차원 배열
Dim MyArray2D(0 To 9, 0 To 9) As Integer
'3차원 배열
Dim MyArray3D(0 To 9, 0 To 9, 0 To 9) As Integer
N차원 배열의 선언 역시 1차원 배열과 같은 방식을 사용합니다. 괄호 안에 범위를 계속 추가해주는 형식으로 원하는 만큼 차원을 늘릴 수 있습니다.
배열 값 사용
'2차원 배열
Debug.Print (MyArray2D(0, 0))
'3차원 배열
Debug.Print (MyArray3D(0, 0, 0))
N차원 배열에서도 1차원 배열과 같이 괄호 안에 인덱스를 작성함으로써 원하는 주소의 값을 사용할 수 있습니다.
동적 할당
VBA에서는 ReDim을 이용해 동적 할당을 수행할 수 있습니다.
Sub Dynamic_Array()
Dim MyArray() As Integer
Dim variable As Integer '원하는 배열 크기
variable = 9
ReDim MyArray(0 To variable) '동적 할당
Debug.Print (MyArray(0))
End Sub
만약 동적 할당을 할 때 원래 있던 값을 유지하고 싶다면 ReDim Preserve를 사용할 수 있습니다.
Sub Dynamic_Array()
Dim MyArray() As Integer
Dim variable As Integer
variable = 9
'최초 동적 할당
ReDim MyArray(0 To variable)
MyArray(0) = 1
'ReDim을 이용한 재할당
ReDim MyArray(0 To variable)
Debug.Print ("Redim: " & MyArray(0))
'출력: [Redim: 0]
MyArray(0) = 2
'ReDim Preserve를 이용한 재할당
ReDim Preserve MyArray(0 To variable * 2)
Debug.Print ("Redim Preserve: " & MyArray(0))
'출력: [Redim Preserve: 2]
End Sub
코드에서 볼 수 있듯이 MyArray(0)의 값에 1을 넣어준 뒤 ReDim을 이용해 재할당을 하면 1이 사라지고 0이 새로 생성되지만, MyArray(0)에 2를 넣어준 뒤 ReDim Preserve를 사용해서 재할당을 하면 넣어준 값이 그대로 유지되는 것을 확인할 수 있습니다.
C언어에서 Calloc과 Realloc의 차이라고 보시면 되겠네요.
반응형
'프로젝트 및 실습 > VBA' 카테고리의 다른 글
[VBA] Select Case Construct (Switch문) (0) | 2022.08.02 |
---|---|
[VBA] User-Defined Data Types (사용자 정의 데이터 타입) (0) | 2022.08.02 |
[VBA] Comment Object 삽입 (0) | 2022.08.01 |
[VBA] Access DB 내 모든 테이블 List 출력 (0) | 2022.07.14 |
[VBA] Access DB 연결 및 Select 실행 (0) | 2022.07.14 |