728x90

VBA는 엑셀의 자체 내장 프로그램이라 엑셀의 시스템의 영향을 강력하게 받습니다.

정확하게는 엑셀을 활용하는 것이 VBA의 존재이유라고 할 수 있죠.

오늘은 셀을 이동하고 선택하는 코드들에 대해서 알아보겠습니다.

 

1. RANGE(셀주소)

 

 - 셀의 주소 혹은 범위를 나타냅니다.

RANGE("A1") 혹은 RANGE("A1:A10") 형식으로 ""(따움표) 안에 주소 이름을 넣습니다.

주소를 텍스트로 입력하는 방식입니다.

텍스트 형식의 변수로 바로 사용할 수 있습니다. 아래의 아주 간단한 예시를 보겠습니다.

 

Sub cell_ex()

    A = "A1:D10"    '범위
    Worksheets("sheet1").Range(A).Select '범위를 선택하라

End Sub

 

결과는 아래와 같습니다. - A1:A10을 선택했습니다.

 

 

 

 

2. CELLS(행번호, 열번호)

 

 - CELLS(행번호, 열번호), 셀의 위치값을 숫자로 넣어 셀을 선택한다.

처음의 행이고 두번째가 열입니다.(X, Y) 좌표계가 익숙한 저는 가끔 헷갈리기도 함니다.

행번호는 왼쪽의 바의 번호 그대로고 열번호는 ABC순서대로 번호로 메겨집니다.

예) CELLS(3, 2) → B3, CELLS(5, 3) → C5 가 됩니다.

 

 

두개의 명령어를 비교하면 RANGE("셀주소")  ← 셀주소가 TEXT 형식이라서 연산이 안됩니다.

A1+1라고 입력하면 에러가 발생합니다. 하지만 (B2:C10)처럼 범위를 입력하기는 쉽습니다.

CELLS 값을 숫자로 넣기 때문에 CELLS(X + 3, Y + 2) 처럼 연산을 통해 이동할 수 있습니다.

하지만 CELLS는 범위를 넣는 기능이 지원되지 않습니다.

그래서 이런 것들이 가능하도록 필수적인 옵션 명령어 OFFSET과 RESIZE에 대해서 알아 보도록 하겠습니다.

 

3. OFFSET(행번호, 열번호)

 

 - 셀을 행번호와 열번호만큼 이동해 줍니다.

B2에 있는 칸을 E3로 입력해 봅시다. 행과 열이 가로세로만 구별되면 금방 익숙해집니다.

행번호와 열번호가 숫자로 들어가니 사칙연산도 가능하고 편리합니다.

Sub cell_ex()

    Worksheets("sheet1").Range("B2").Select                 'B2를 선택합니다.
    Worksheets("sheet1").Range("B2").Offset(0, 0).Select    'B2에서 안움직이고 그대로 있습니다.
    Worksheets("sheet1").Range("B2").Offset(2, 3).Select    'B2에서 행 2개 열 3개 이동해서 E4가 됩니다.

    Worksheets("sheet1").Cells(2, 2).Select                 'B2를 선택합니다.
    Worksheets("sheet1").Cells(2, 2).Offset(0, 0).Select    'B2에서 안움직이고 그대로 있습니다.
    Worksheets("sheet1").Cells(2, 2).Offset(2, 3).Select    'B2에서 행 2개 열 3개 이동해서 E4가 됩니다.

End Sub

이동경로

 

320x100

 

 

4. RESIZE(행번호, 열번호)

 

 - 주어진 셀에서 행번호와 열번호만큼의 범위를 지정합니다.

주의할 점은 RESIZE는 크기에 관한거라 1이 최소입니다.

0이나 음수를 지정하면 에러가 납니다.

Sub cell_ex()

    Worksheets("sheet1").Range("B2").Select                 'B2를 선택합니다.
    Worksheets("sheet1").Range("B2").Resize(1, 1).Select    'B2에서 안움직이고 그대로 있습니다.
    Worksheets("sheet1").Range("B2").Resize(2, 3).Select    'B2에서 행 2개 열 3개만큼을 선택합니다.

    Worksheets("sheet1").Cells(2, 2).Select                 'B2를 선택합니다.
    Worksheets("sheet1").Cells(2, 2).Resize(1, 1).Select    'B2에서 안움직이고 그대로 있습니다.
    Worksheets("sheet1").Cells(2, 2).Resize(2, 3).Select    'B2에서 행 2개 열 3개만큼을 선택합니다.
End Sub

범위선택

 

5. OFFSET과 RESIZE

 

이 두개는 같이 사용할 수 있습니다.

이동 후에 범위를 선택할 수 도 있지만 반대로 할 수도 있습니다.

자유도가 상당히 높습니다. 

Sub cell_ex()

    Worksheets("sheet1").Range("B2").Offset(2, 3).Resize(3, 2).Select
    Worksheets("sheet1").Cells(2, 2).Offset(2, 3).Resize(3, 2).Select
    
End Sub

 

여기까지를 익히면 셀의 이동은 자유자재입니다.

셀만 이동한다고 뭐가 되는건 아니지만 VBA의 기초가 되는 시작점이니 다루어 보았습니다.

그외에도 이동에 도움이 되는 옵션은 조금씩 더 있습니다.

하지만 오늘 기능으로 일단 다 구현이 가능할 것입니다.

필요에 따라서 다음에 모아서 다루어 보도록 하겠습니다.

반응형

+ Recent posts