애들센스


루프를 없애는 또 하나의 잡설

워크시트에 테이블 형태의 자료를 만드는 경우 , 미리 컬럼명을 만들어둔 템플릿 시트를 사용할 수 있는데, 때론 컬럼명을 동적으로 만들어 생성하는 경우도 있다. 컬럼명을 VBA코드로 출력하는 경우 , 각각의 셀 마다 컬럼명을 일일이 찍어줄 수도 있고, 코드가 너무 많아 스마트하게 배열에 미리 넣어두고 루프를 돌려 출력하기도 한다.

다음은 루프를 사용하지 않고 셀 범위에 여러 개의 값을 출력하는 예인데, 하나의 값을 출력하는 경우, VBA배열을 사용하는 경우, 엑셀 배열리터럴을 사용하는 경우, 두 배열을 혼합하고, 워크시트 함수 TODAY(), NOW()를 사용하는 경우를 보여준다.
' http://timebird.egloos.com/7455699
' Resize로 셀 영역을 확장하고 값을 출력
Dim myStr As String

myStr = "a string from vba"
With Sheet1.Range("D1")
.Offset(0, 1).Resize(1, 2) = "단일값"
.Offset(1, 1).Resize(1, 2) = Array("Price", "Delta")
.Offset(2, 1).Resize(3, 2) = [{"Zip", "22150";"City", "Springfield"; "State", "VA"}]
.Offset(5, 1).Resize(1, 3) = Array([Today()], [Now()], myStr)
End With

덧글

댓글 입력 영역