[VBA 제 52강] 배열(Array)에 대하여(ReDim문) 썸네일 이미지
[VBA 제 52강] 배열(Array)에 대하여(ReDim문)
콘텐츠 타입 MS 오피스 엑셀 2003(2007, 2010가능), Windows XP 이상
용량0KB
조회4,567
즐겨찾기
[VBA 제 52강] 배열(Array)에 대하여(ReDim문)를 즐겨찾기 한 횟수는 1 1입니다.
이용등급 유료 (회원권 or 단품 구매)
제품 상세정보

 

 

 




[ 기초 강좌 ]

 

제 52강

배열(Array)에 대하여(ReDim문)

 

배열(Redim문) 에 대해 알아봅니다.

이럴 때 필요해요

배열을 이용하여 엑셀함수들을 활용할때 필요합니다.

이렇게 사용해요

변수를 배열로 사용함에 있어 크게 정적 배열과 동적 배열 두 가지의 종류로 구분할 수 있습니다.

정적 배열은 배열 변수의 선언문에서 배열의 크기를 지정하며 프로그램의 중간에 변경할 수 없습니다.

그러나, 동적 배열은 배열 변수의 선언문에서 배열의 특정 크기를 지정하지 않은 채 선언하며

프로그램의 실행 중간에 원하는 크기로 조정할 수 있습니다.

■  정적 배열 변수의 선언형태

   Dim Rev(10) As Variant

■  동적 배열 변수의 선언형태

   Dim Rev( ) As Variant

다음은, 프로시저(동적배열변수사용_2) 라는버튼을 눌러 프로시저를 실행을 해보았을때.

[VBA 제 52강] 배열(Array)에 대하여(ReDim문)
 

위 그림과 같은 결과가 나타나는 프로시저가 있을때.

 

코드는 이렇습니다.

 

 

Sub 동적배열변수사용_2()

  Dim i() As Integer

  Dim r As Integer

    

     ReDim i(3)

    For r = 1 To 3

        i(r) = r * 100

        Cells(r, 1) = i(r)

    Next r

    

     ReDim i(5)

    For r = 1 To 5

        Cells(r, 2) = i(r)

    Next r

End Sub

 

 

프로시저(동적배열변수사용_2)의 코드를 살펴 보시면 아시겠지만, 맨 처음의 코드에서 ReDim i(3) 으로

선언하여 변수  i 의 크기를 3으로 재선언했으며, 다시 ReDim i(5) 로 선언하여 크기 5로 재선언했습니다.

이때 주의하셔야 할 점은 프로시저(동적배열변수사용_2) 의 경우, 즉 먼저 크기 3으로 선언되고 숫자 100,

200, 300 등이 대입된 후, 다시 크기 5로 선언한 경우, 먼저 선언된 배열 ReDim i(3)은 없어 지고 새로운

배열, 즉 ReDim i(5) 이 생성된다는 점입니다.

따라서, 처음에 대입한 숫자들이 없어 지고 전체가 숫자 0으로 초기화됩니다.

그러나 이전의 배열 크기를 보존한 채 배열의 크기를 늘릴 수 있는 방법이 있습니다.

다음은 동적배열변수사용_3 이라는 버튼을 눌러 프로시저를 실행해 보았을때


[VBA 제 52강] 배열(Array)에 대하여(ReDim문)

이런 결과가 나온다면?

 

코드는 이렇습니다

 

Sub 동적배열변수사용_3()

  Dim i() As Integer

  Dim r As Integer

    

     ReDim i(3)

    For r = 1 To 3

        i(r) = r * 100

        Cells(r, 1) = i(r)

    Next r

    

     ReDim Preserve i(5)

    For r = 1 To 5

        Cells(r, 2) = i(r)

    Next r

End Sub

 

 

앞서의 동적배열변수사용2 라는 프로시저와 다른 부분이 있다면, 단지 변수  i 의 크기를 5로 재선언하는

구문, 즉 ReDim i(5) 와 ReDim Preserve i(5) 의 차이로 Preserve 라는 키 워드가 사용된 점 뿐입니다.

여기서  Preserve라는 단어의 사전적 의미에서도 알 수 있듯이 'ReDim Preserve'문은 배열을 보존한 채

크기가 3에서 5로 늘려 짐을 알 수 있습니다.

따라서 이미 대입된 숫자들(100, 200, 300 등)이 그대로 출력됩니다.

먼저 동적배열변수사용_4 라는 버튼을 눌러 나타 나는 결과

[VBA 제 52강] 배열(Array)에 대하여(ReDim문)
[VBA 제 52강] 배열(Array)에 대하여(ReDim문)
 

 

그다음

시트명을 적당한 숫자(789 등)으로 변경하고 나서, 다시 같은 버튼을 눌러도 숫자만있는 시트가 선택되는걸

볼수있습니다.

Sub 동적배열변수사용_4()

Dim Sht As Worksheet

Dim Rev() As Variant

Dim n As Integer

  For Each Sht In Worksheets

   With Sht

    If IsNumeric(.Name) = True Then

'각 시트들을 순환하며 만약(If), 시트의 이름이 숫자(IsNumeric) 인 경우에는 …

     ReDim Preserve Rev(n)

        Rev(n) = .Name

'동적 배열변수인 Rev에 해당 시트의 이름을 하나씩 차곡차곡( n = n + 1) 저장합니다.

'이때 순환을 하더라도, 앞서 동적 배열변수(Rev)에 저장된 데이터는 그대로 보전(Preserve)됩니다.

          n = n + 1

      End If

   End With

Next Sht

'동적 배열변수(Rev)에 저장된 데이터, 즉 숫자값의 시트명을 갖는 시트들을 한꺼번에 선택(Select)합니다.

  Sheets(Rev).Select

End Sub



저작권정보
1. 콘텐츠의 저작권은 쿠키(www.coukey.co.kr)에 있으며, 사용권한은 1인 1카피입니다.
2. 다운로드 받은 콘텐츠는 본인(본인회사)만 사용할 수 있습니다.
3. 다른 사람과 공유하거나 원본 또는 수정 후 무단전제,무단배포,무단판매,무단 공유할 수 없습니다.
4. 웹상에서 배포는 상업,비상업적 목적을 불문하고, 손해배상등 가중처벌됩니다.
[VBA 제 52강] 배열(Array)에 대하여(ReDim문)
이용후기

업무자동화 맞춤제작

고객님의 상황에 100% 맞춘 콘텐츠 제작 전문 서비스를 이용해 보세요.
프리미엄 무료 이벤트 중