[엑셀 VBA #8] Resize, Offset 문을 이용한 셀 범위 설정



엑셀 VBA를 사용하다 보면 특정 셀 하나가 아닌 범위를 참조해야 하는 경우가 많습니다.


이러한 경우에 쓰이는 문법이 Resize문과 Offset 문입니다.





Resize


Resize문은 셀을 잡고 드래그하는 것과 같은 효과를 줍니다.






Cells(2,1).Resize(, 2).Select


위 사진과 같은 엑셀에 위 엑셀 VBA를 실행시키면 아래와 같이 선택됩니다.




Resize 괄호 안의 첫 번째 값이 커지면 아래로, 두 번째 값이 커지면 우측으로 드래그가 됩니다.


그렇다면 음수 값(마이너스 값)을 넣는다면 어떻게 될까요?


오류가 나게 됩니다.


가끔은 선택된 셀 좌측과 상단으로 범위를 설정해야 하는 경우도 생기게 되는데, 이 경우에 필요한 것이 Offset 문입니다.





Offset


※수정사항 : Offset문을 사용할 때에는 괄호 안 우측 값을 공백으로 두면 안됩니다.

   제가 공개한 스크린샷에는 우측 값이 공백으로 되있는데, 공백의 경우 0 값을 줘야 합니다.


Offset문은 선택된 셀을 기준으로 설정한 만큼 떨어진 곳에 위치한 셀을 선택합니다.


Cells(3,8).offset(, -1).Select


위와 같은 코드를 실행시키면




위와 같이 선택됩니다.

Resize문과 달리 음수 선택이 가능합니다.





그렇다면 선택한 셀의 좌측 혹은 상단으로 블록을 잡으려면 어떻게 해야 할까요?


Offset 문에서 사용한 엑셀을 재활용하겠습니다.




Cells(3, 8).Offset(, -1).Resize(, 2).Select


위 코드를 실행시키면...




이렇게 됩니다.


먼저 Offset으로 좌측의 셀을 지정한 후, Resize로 우측 한칸을 같이 블록지정 하게 됩니다.





Resize문과 Offset문은 엑셀 VBA에서 정말 많이 사용됩니다.

추후 엑셀 VBA 강의에서 계속~ 사용될 예정이니 꼭 확실히 이해하고 넘어가 주세요.














Posted by Simon K
: