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

엑셀쿠키는 한 번의 다운로드로 평생 이용하실 수 있습니다. 프로그램과 데이터를 고객의 PC에 저장하여 사용하는 형식이라 안전하게 사용 가능합니다. 이용 기간에 따른 추가 비용이 발생하지 않아 매우 경제적입니다.

맞춤형

중소기업의 개별 특성, 다양한 업무를 상황별로 고려하여 제작된 프로그램을 업데이트합니다. 분야별 5,000여 개의 프로그램 중 내 업무에 맞는 프로그램을 다운받는 맞춤형 서비스입니다.

쉬운 활용

쿠키 프로그램은 MS Excel의 기본 사용법만 알면 즉시 사용할 수 있는 매운 쉬운 프로그램으로 누구나 손쉽게 배우고 사용할 수 있습니다.

중소기업의 모든 업무자동화!

엑셀쿠키로 모두 해결하세요!
1 Vector 11
image 59
image 60
image 56
Pro display XLS Vector 12
Microsoft Excel 표준

쿠키의 업무자동화 프로그램은 VBA 코드로 개발된 제품으로
MS Excel 프로그램 기반으로 사용 가능하며,
자체적으로 개발한 기능은 물론,
MS Excel의 강력한 기능을 모두 사용하실 수 있습니다.

241202_coukey_BI_white2_07

엑셀쿠키는 기업의 생산성을 높이는 업무자동화 지원 프로그램입니다.

image 62 image 70 image 61 image 71 image 65 image 66 image 64 image 68
image 63 image 69
제품 상세정보

 

 

 




[ 기초 강좌 ]

 

제 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% 맞춘 콘텐츠 제작 전문 서비스를 이용해 보세요.
프리미엄 무료 이벤트 중