![[VBA 제 52강] 배열(Array)에 대하여(ReDim문) 썸네일 이미지 [VBA 제 52강] 배열(Array)에 대하여(ReDim문) 썸네일 이미지](/smartediter/upload_img/thum_1538959642.jpg)
엑셀쿠키는 한 번의 다운로드로 평생 이용하실 수 있습니다. 프로그램과 데이터를 고객의 PC에 저장하여 사용하는 형식이라 안전하게 사용 가능합니다. 이용 기간에 따른 추가 비용이 발생하지 않아 매우 경제적입니다.
중소기업의 개별 특성, 다양한 업무를 상황별로 고려하여 제작된 프로그램을 업데이트합니다. 분야별 5,000여 개의 프로그램 중 내 업무에 맞는 프로그램을 다운받는 맞춤형 서비스입니다.
쿠키 프로그램은 MS Excel의 기본 사용법만 알면 즉시 사용할 수 있는 매운 쉬운 프로그램으로 누구나 손쉽게 배우고 사용할 수 있습니다.
중소기업의 모든 업무자동화!
쿠키의 업무자동화 프로그램은 VBA 코드로 개발된 제품으로
MS Excel 프로그램 기반으로 사용 가능하며,
자체적으로 개발한 기능은 물론,
MS Excel의 강력한 기능을 모두 사용하실 수 있습니다.

엑셀쿠키는 기업의 생산성을 높이는 업무자동화 지원 프로그램입니다.
[ 기초 강좌 ]
제 52강
배열(Array)에 대하여(ReDim문)
배열(Redim문) 에 대해 알아봅니다.
이럴 때 필요해요
배열을 이용하여 엑셀함수들을 활용할때 필요합니다.
이렇게 사용해요
변수를 배열로 사용함에 있어 크게 정적 배열과 동적 배열 두 가지의 종류로 구분할 수 있습니다.
정적 배열은 배열 변수의 선언문에서 배열의 크기를 지정하며 프로그램의 중간에 변경할 수 없습니다.
그러나, 동적 배열은 배열 변수의 선언문에서 배열의 특정 크기를 지정하지 않은 채 선언하며
프로그램의 실행 중간에 원하는 크기로 조정할 수 있습니다.
■ 정적 배열 변수의 선언형태
Dim Rev(10) As Variant
■ 동적 배열 변수의 선언형태
Dim Rev( ) As Variant
다음은, 프로시저(동적배열변수사용_2) 라는버튼을 눌러 프로시저를 실행을 해보았을때.
위 그림과 같은 결과가 나타나는 프로시저가 있을때.
코드는 이렇습니다.
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 이라는 버튼을 눌러 프로시저를 실행해 보았을때
이런 결과가 나온다면?
코드는 이렇습니다
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 라는 버튼을 눌러 나타 나는 결과
그다음
시트명을 적당한 숫자(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
2. 다운로드 받은 콘텐츠는 본인(본인회사)만 사용할 수 있습니다.
3. 다른 사람과 공유하거나 원본 또는 수정 후 무단전제,무단배포,무단판매,무단 공유할 수 없습니다.
4. 웹상에서 배포는 상업,비상업적 목적을 불문하고, 손해배상등 가중처벌됩니다.
![[VBA 제 52강] 배열(Array)에 대하여(ReDim문) [VBA 제 52강] 배열(Array)에 대하여(ReDim문)](/common/images/cmm/view_middel.jpg)