VBA Redim Preserve 하다보면 발생하는 오류 '형식이 맞지 않습니다.'

2020. 1. 8. 13:13VBA/배열활용

728x90
반응형

생각으로는 "배열사이즈를 늘리면서 값이 있는 것만 들어가게 해야지!" 했을 때 아래 처럼 생각을 했다.

Redim Preserve v(1 to r, 1 to 2)

이런식으로 배열크기를 재 지정하면서

r = r + 1

Row 사이즈를 늘린다.

하지만 이 때 이 렇게 Redim Preserve를 사용했을 때 오류가 발생할 것이다.

왜냐하면 Redim Preserve v(1 to 1, 1 to 1) 사이즈 지정할 때 마지막 차원의 값만 늘릴 수 있다. 즉

v(row, col) 구조라고 하면 row를 늘리면서 사용할 수는 없다는 것이고,

col은 늘리면서 preserve를 사용할 수 있다.



Dim r as integer, c as integer

r = 1: c = 1

ReDim vs(1 To 9, 1 To r)

For i = LBound(v, 1) To UBound(v, 1)

      If InStr(v(i, 9), "XXX") = 0 Then ' 값이 'XXX'라는 걸 포함하지 않는 것만

              For j = LBound(vs, 1) To UBound(vs, 1)

                   vs(j, r) = v(i, c)

                   c = c + 1

             Next j

              c = 1

              r = r + 1

              ReDim Preserve vs(1 To 9, 1 To r)

      End If

Next i

 

 

728x90
반응형