Please Enable JavaScript!
Gon[ Enable JavaScript ]

엑셀 VBA 배열의 크기를 알아 내기

엑셀(Excel)/VBA
반응형

VBA 에서 동적 배열을 다루는 경우 데이터를 처음부터 끝까지 꺼내서 가공하려면 배열의 시작과 끝을 알아야 합니다. VBA 에서는 배열이 무조건 0에서부터 시작하는 것이 아니기 때문입니다. 배열의 크기를 알아 내는 함수는 두 가지 입니다. 배열의 시작 인덱스와 마지막 요소의 인덱스를 알 수 있는 UBound LBound 입니다.

 

 

그림에서 선언한 1차원 배열의 10 0 ~ 10 까지 이므로 11자리를 가지고 있는 것입니다. Names(10) 과 같은 1차원 배열 형태일 경우 UBound(Names) + 1 로 배열의 크기를 구할 수 있습니다. 그럼 시작과 끝의 인덱스를 지정한 경우는 어떻게 구할까요?

엑셀 VBA 배열의 크기를 알아 내는 방법

 

Names(2 to 10) 는 시작 인덱스가 2 이고 종료가 10 입니다. 이렇게 배열을 선언할 때 시작과 종료를 지정할 수 있습니다. 이런 경우 UBound LBound 로 구해야 합니다. 식은 다음과 같습니다. 그러니까 10 - 2 + 1 = 9 이 되겠죠.

arrCount = UBound(Names) – LBound(Names) + 1

엑셀 VBA 배열의 크기를 알아 내는 방법

 

다음은 2차원 배열의 크기를 알아내는 방법입니다. UBound LBound 의 두 번째 인수는 배열의 차수를 나타냅니다. UBound(NamesOfPhone, 1) 1차원 배열의 마지막 인덱스 값을 반환합니다. UBound(NamesOfPhone, 2) 는 두 번째 인자가 2 이므로 2차원 배열의 인덱스 값이 됩니다. 그래서 1차원과 2차원 배열의 크기를 알아내는 소스는 다음과 같습니다.

Sub ArrayInfo()
   
    Dim x As Integer, y as Integer
    
    '' 2차원 배열
    Dim NamesOfPhone(10, 10) As String
       
    x = UBound(NamesOfPhone, 1) - LBound(NamesOfPhone, 1) + 1
    y = UBound(NamesOfPhone, 2) - LBound(NamesOfPhone, 2) + 1
   
    MsgBox "x : " & x & ", y : " & y
 
End Sub

엑셀 VBA 배열의 크기를 알아 내는 방법

아래는 참고하면 좋을 만한 글들의 링크를 모아둔 것입니다. ※
엑셀 VBA 배열 처리를 위한 Array 객체 사용하는 방법
엑셀 VBA 영역(Range)을 배열(Array) 로 변경하기
엑셀 VBA 반환한 배열 데이터 셀에 표현하기
엑셀 VBA 반복문 For Next, For Each Next 사용하기
엑셀 VBA 문자열 글자 하나씩 추출하기
반응형
Posted by 녹두장군1
,