[VBA] Dynamic Array(동적으로 배열 추가하기)

2024. 4. 3. 11:07·[VBA]
반응형

배열의 크기를 아는경우에는 미리 배열 크기를 선언하고 담아도 되지만 담아야 하는 개수가 몇개인지 모를때도 있다.

 

담아야 하는 배열의 개수를 모를 때 동적으로 배열크기를 조정하면서 1개씩 추가해보겠다.

 

 

 

우선 예제로 데이터를 대충 넣고 100이하의 값만 배열에 담기.

 

 

코드는 아래와 같다.

 

우선 동적배열로 선언하기 위해서는 null array 먼저 선언하고 ReDim 으로 재정의 해줘야 된다.

그런 다음 배열에 추가할 때는 Redim Preserve 로 기존 담겨있는 배열안의 값들을 보존해줘야 한다. 안 그러면 날라감.

배열의 크기를 return 해주는 ubound 를 써서 배열의 크기를 1씩 증가시켜준다.

하지만 ubound 함수를 쓰기위해서는 배열이 null 이면 안 되기 때문에..

나같은 경우는 먼저 arrTest(0) 으로 먼저 크기를 만들어주고 처음 배열에 담기는순가 0 번째 배열이 빈값이면 값을 넣어주는 방식으로 했다.

더 좋은 방식이 있을지도 모른다.ㅎㅎ

Sub ArrayTest()

Application.ScreenUpdating = False
Application.DisplayAlerts = False

Dim wb As Workbook, ws As Worksheet

Set wb = ThisWorkbook
Set ws = wb.Sheets(1)

Dim arrTest() As String '편의상 string..
ReDim arrTest(0)


For i = 1 To ws.Range("a1").CurrentRegion.Rows.Count
    If ws.Range("a" & i) <= 100 Then
        If arrTest(0) = "" Then '처음 1번째 배열 추가할 때
            arrTest(0) = ws.Range("a" & i)
        Else '2번째 부터 추가할 때. 배열 크기 1씩 증가하고 담기.
            ReDim Preserve arrTest(UBound(arrTest) + 1)
            arrTest(UBound(arrTest)) = ws.Range("a" & i)
        End If
    End If
Next

Application.ScreenUpdating = True
Application.DisplayAlerts = True


End Sub

 

 

결과를 한번 확인해 보면

 

잘 들어갔네용

 

간단한 예제지만 vba array 가 타 언어에 비해 좀 까다로운 점이 있어서 작성해 보았다.

 

아래는 예제파일.

ex dynamic array.xlsm
0.01MB

 

반응형
저작자표시 비영리 변경금지 (새창열림)

'[VBA]' 카테고리의 다른 글

[VBA] Array.Contain(특정 값이 배열안에 있는지 확인)  (0) 2024.04.03
[VBA]엑셀 다중 콤보박스(Excel Multi Select Combo Box)  (4) 2023.12.22
[VBA] 엑셀범위 그림파일로 저장(Range to jpg)  (0) 2023.08.03
[VBA] VBA 정규식 사용하기  (0) 2022.08.24
[VBA] vba string.format, printf 기능  (0) 2022.06.04
'[VBA]' 카테고리의 다른 글
  • [VBA] Array.Contain(특정 값이 배열안에 있는지 확인)
  • [VBA]엑셀 다중 콤보박스(Excel Multi Select Combo Box)
  • [VBA] 엑셀범위 그림파일로 저장(Range to jpg)
  • [VBA] VBA 정규식 사용하기
jkod
jkod
  • jkod
    개발린이
    jkod
  • 반응형
    • 분류 전체보기
      • [RPA]
      • [Python]
      • [VBA]
      • [JAVA]
      • [Window]
      • [MAC]
      • [기타]
        • 생활
  • 최근 글

  • 인기 글

  • hELLO· Designed By정상우.v4.10.2
jkod
[VBA] Dynamic Array(동적으로 배열 추가하기)
상단으로

티스토리툴바