1. 개별 변수와 배열
개별 변수는 한 개의 이름에 한 개의 값만을 가지는데 비해서
배열은 동일한 이름에 여러 개의 요소를 갖는 단일 변수입니다. 배열은 인덱스 또는 아래 첨자를 이용해 각 요소에 접근할 수 있습니다.
2. 변수 선언
여러 개의 값을 넣을 수 있는 변수를 선언할 때
개별 변수는 이름을 달리해서
dim int1 as integer, int2 as interger, int3 as integer라고 해야 하지만
배열은 한 개의 이름으로
dim intNum(2) as integer라고 3개의 요소를 만들 수 있습니다.
배열은 인덱스가 0부터 시작되기 때문에 intNum(2)이지만 인덱스가 0, 1, 2이기 때문에 3개 인덱스가 되는 것입니다.
3. 변수 활용
값을 대입할 때 개별 변수, 배열 모두 한 번에 하나씩 값을 할당(대입)할 수도 있지만
배열의 경우는 반복문을 이용해서 쉽게 값을 대입할 수 있습니다.
개발도구 - Visual Basic 명령을 누른 후 삽입 > 모듈을 눌러 모듈을 추가하고,
오른쪽 코드 창에 아래와 같이 코드를 작성합니다.
Sub 변수선언()
Dim i As Integer
Dim int1 As Integer, int2 As Integer, int3 As Integer
Dim intNum(2) As Integer
int1 = Range("a1"): int2 = Range("a2"): int3 = Range("a3")
Debug.Print int1
Debug.Print int2
Debug.Print int3
For i = 0 To 2
intNum(i) = Range("a" & (i + 1))
Debug.Print intNum(i)
Next
End Sub
가. 개별 변수
int1 = Range("a1"): int2 = Range("a2"): int3 = Range("a3")
이라고 각각 변수에 값을 할당했습니다.
한 줄에 명령문을 작성할 경우는 :(콜론)으로 구분합니다.
Debug.Print는 직접 실행창에 값을 출력하는 구문입니다.
나. 배열
For i = 0 To 2 intNum(i) = Range("a" & (i + 1)) Debug.Print intNum(i) Next |
각각 할당도 가능하지만,
For ~ Next 반복문을 이용해 한꺼번에 값을 대입할 수 있으며
값을 대입하는 구문은 intNum(i) = Range("a" & (i + 1)) 하나입니다.
인덱스는 0부터 시작하지만 셀 주소는 1부터 시작하기 때문에 i가 아니라 (i + 1)이라고 작성했습니다.
4. 배열의 인덱스 값 변경하기
가. 인덱스 시작 값을 1로 변경하기
배열의 인덱스는 0부터 시작하지만 이해하기 쉽도록 1로 변경할 수 있습니다.
option base 1이라고 선언하는데, 공통적으로 적용되도록 sub 프로시저 밖에 있어야 합니다.
이렇게 하면 intNum 배열의 인덱스가 1부터 시작하기 때문에 sub 프로시저의 구문을 아래와 같이 수정해야 합니다.
당초 | 변경 | 설명 |
Dim intNum(2) As Integer | Dim intNum(3) As Integer | 1부터 시작하기 때문에 인덱스 종료값이 3입니다. |
For i = 0 To 2 intNum(i) = Range("a" & (i + 1)) |
For i = 1 To 3 intNum(i) = Range("a" & i) |
인덱스가 1부터 3이므로 for 다음의 숫자를 0 to 2에서 1 to 3로 수정하고, 셀 주소가 인덱스와 일치하기 때문에 i로 하면 됩니다. |
나. 인덱스 범위 지정하기
option base 1로 지정하지 않고 변수 선언 시 인덱스 값을 1 to 3로 지정할 수 있습니다.
Option Explicit
'Option Base 1
Sub 변수선언()
Dim i As Integer
Dim int1 As Integer, int2 As Integer, int3 As Integer
Dim intNum(1 To 3) As Integer
int1 = Range("a1"): int2 = Range("a2"): int3 = Range("a3")
Debug.Print int1
Debug.Print int2
Debug.Print int3
For i = 1 To 3
intNum(i) = Range("a" & i)
Debug.Print intNum(i)
Next
End Sub
배열 요소 값을 확인하려면 intNum부분에서 마우스 오른쪽 버튼을 누른 후 조사식 추가 메뉴를 누르고,
Next 문 왼쪽 기둥을 마우스 왼쪽 버튼으로 눌러 중단점을 만든 후 F5키 또는 표준 도구 모음의 실행 아이콘을 눌러 한 번씩 Next에 멈춘 상태에서 intNum왼쪽의 +를 눌러 펼치면
intNum(1)에 86이 할당되고, intNum(2)와 intNum(3)에는 아직까지 값이 할당되지 않은 것을 확인할 수 있습니다.
두 번 더 실행한 후 확인하면 intNum(3)까지 값이 할당됐습니다.
한번 더 실행하면 intNum이 초기화돼서 Empty라고 표시됩니다.
변수를 다시 선언하는 Redim 문과 2차원 등 다차원 배에 대해서는 따로 다루도록 하겠습니다.
'EXCEL - VBA' 카테고리의 다른 글
구구단 만들기(1) (엑셀 VBA의 매크로 기록하기) (0) | 2022.12.08 |
---|---|
엑셀 VBA - 배열(2) (0) | 2022.12.07 |
Excel 추가 기능을 목록에서 지우기 (0) | 2022.12.03 |
For Each ~ Next (0) | 2022.11.14 |
For ~ Next 반복문 (0) | 2022.11.11 |