답변:
이것을 우연히 발견하고 내 해결책을 제안 할 것이라고 생각했습니다. 나는 일반적으로 다중 차원 배열에 범위를 할당하는 내장 기능을 사용하는 것을 좋아합니다 (제 생각에는 JS 프로그래머이기도합니다).
나는 자주 다음과 같은 코드를 작성합니다.
Sub arrayBuilder()
myarray = Range("A1:D4")
'unlike most VBA Arrays, this array doesn't need to be declared and will be automatically dimensioned
For i = 1 To UBound(myarray)
For j = 1 To UBound(myarray, 2)
Debug.Print (myarray(i, j))
Next j
Next i
End Sub
변수에 범위를 할당하는 것은 VBA에서 데이터를 조작하는 매우 강력한 방법입니다.
Range("A1:D4") = myarray
. 참고 : Dim myarray
변형으로; 기본적으로 1 기반 2dim 배열 이라는 사실에주의하십시오
루프에서는 항상 Cells
다음과 같이 R1C1 참조 메서드 를 사용하여 클래스 를 사용하는 것을 선호합니다 .
Cells(rr, col).Formula = ...
이것은 빠르고 쉽게 날 수 있습니다 루프 이상 범위 쉽게 세포의 :
Dim r As Long
Dim c As Long
c = GetTargetColumn() ' Or you could just set this manually, like: c = 1
With Sheet1 ' <-- You should always qualify a range with a sheet!
For r = 1 To 10 ' Or 1 To (Ubound(MyListOfStuff) + 1)
' Here we're looping over all the cells in rows 1 to 10, in Column "c"
.Cells(r, c).Value = MyListOfStuff(r)
'---- or ----
'...to easily copy from one place to another (even with an offset of rows and columns)
.Cells(r, c).Value = Sheet2.Cells(r + 3, 17).Value
Next r
End With