VBA에서 배열크기를 취득하기 위해서는 마지막 인덱스 번호를 가져오는 UBound()함수와
처음 시작하는 인덱스 번호를 가져오는 LBound()함수를 활용하여 계산한다.
먼저 UBound(), LBound()의 구조와 활용법을 알아보고
UBound(), LBound()를 활용하여 아래와 같은 배열의 크기를 구하는 법을 알아보겠다.
1. 인덱스 번호가 0부터 시작하는 1차원 배열
2. 인덱스 번호가 0부터 시작하지 않는 1차원 배열
UBound(), LBound()의 구조와 활용법
1. UBound
구조 - 인수 : 배열 변수
결과값 : 배열의 마지막 인덱스 번호
UBound(배열)
아래는 간단한 예제이다.
Sub SearchLastIndexU()
Dim tmpArr(10) As Integer
MsgBox UBound(tmpArr)
End Sub
위의 소스의 실행 결과는 메세지 박스에 tmpArr의 마지막 인덱스 번호인 10을 출력한다.
tmpArr는 0부터 10까지의 인덱스가 존재하므로 길이는 11이다.
2. LBound(배열)
구조 - 인수 : 배열 변수
결과값 : 배열의 첫번째 인덱스 번호
LBound(배열)
아래는 간단한 예제이다.
Sub SearchLastIndexL()
Dim tmpArr(3 To 7) As Integer
MsgBox LBound(tmpArr)
End Sub
위의 소스의 실행 결과는 메세지 박스에 tmpArr의 첫번째 인덱스 번호인 3을 출력한다.
배열의 크기를 구하는 법
1. 인덱스 번호가 0부터 시작하는 1차원 배열
UBound()는 마지막 인덱스 번호를 돌려준다. 0부터 5까지의 인덱스 번호를 가진 배열의 크기를 구하고자 한다면
UBound(배열) +1 로 배열의 크기를 구할 수 있다. 배열의 크기는 6이다.
2. 인덱스 번호가 0부터 시작하지 않는 1차원 배열
UBound(배열) - LBound(배열) + 1
3부터 7까지의 인덱스 번호를 가진 배열의 경우
7 - 3 + 1 의 계산과 같은 결과가 나오기에 배열의 크기는 5가 된다.
아래는 1, 2번의 예제이다.
Sub SearchLastIndex()
Dim tmpArr1(5) As Integer
Dim tmpArr2(3 To 7) As Integer
MsgBox UBound(tmpArr1) + 1
MsgBox UBound(tmpArr2) - LBound(tmpArr2) + 1
End Sub
첫번째 메세지 박스에는 인덱스 번호가 0부터 5까지인 배열의 길이이다. 결과는 6
두번째 메세지 박스에는 인덱스 번호가 3부터 7까지인 배열의 길이이다. 결과는 5
'IT 이모저모 > VBA' 카테고리의 다른 글
VBA(엑셀 매크로) 글자색, 배경색 바꾸기 (interior, Font) (0) | 2020.07.16 |
---|---|
VBA(엑셀 매크로) 문자열 길이 구하기(Len, LenB) (0) | 2020.07.14 |
VBA(엑셀 매크로) 배열, 2차원 배열 선언 및 활용 (0) | 2020.07.08 |
VBA(엑셀 매크로) 셀 내용 가져오기, 셀 내용 넣기(Cells활용) (1) | 2020.07.05 |
VBA(엑셀 매크로) 문자열 자르기(Left, Right) (0) | 2020.06.28 |