EXCEL - VBA

엑셀 VBA에서 셀 또는 범위 지정하기(3) - 여러 셀 또는 떨어진 셀

별동산 2022. 11. 3. 09:25
반응형

3. 여러 셀 지정하기

 

가. Range 이용하기

SUM 함수를 이용할 때처럼 Range 안에 셀 주소를 입력하여 범위를 지정할 수 있습니다.

연속된 범위는 :(콜론)을 사용하고 떨어진 범위는 ,(콤마)를 사용합니다.

 

(1) 연속된 범위 지정

개발도구 - Visual Basic 명령을 눌러 Visual Basic Editor를 실행한 다음 모듈을 삽입하고, 오른쪽 코드 창에 아래 코드를 입력합니다.

Sub 연속범위지정()
    Range("a1:a3").Select
End Sub

 

그리고, 삼각형 모양의 아이콘을 누르거나, F5키를 눌러 실행하고, 엑셀 모양 아이콘을 눌러 엑셀로 돌아가

 

A1셀에서 A3셀까지 선택됩니다.

 

값을 입력하려면 지정된 범위 = 값 이라고 입력하면 됩니다.

Sub 연속범위지정()
    Range("a1:a3").Select
    Selection = 100
    Range("a1:a3") = 100
End Sub

 

Selection = 100 이라는 것은 이미 A1에서 A3셀이 선택되어 있으므로 선택된 범위를 가리키는 것이고, = 100이라고 했으므로 100이 대입됩니다.

 

이때 Selection.Value=100이 원칙이지만 value는 기본 속성이기 때문에 생략 가능합니다.

 

Range("a1:a3") = 100은 위 2줄이 없어도 바로 A1셀부터 A3셀에 100을 대입합니다.

 

첫 번째 줄과 두 번째 줄의 실행을 막으려면 주석 처리해야 하는데, 해당 줄의 실행문 앞에 '(작은 따옴표)를 입력하거나,

보기 - 도구 모음 - 편집 메뉴를 눌러 편집 도구 모음을 추가한 다음

엑셀 VBA 도구 모음 추가하기

 

첫 번째 줄과 두 번째 줄을 선택하고 편집 도구 모음에서 '주석 블록 설정'아이콘을 눌러 주석 처리해도 됩니다.,

 

 

그러면 아래와 같이 줄의 맨 앞에 '(작은 따옴표)가 추가됩니다.,

F5키를 눌러 실행하면

실행문 주석 처리
주석처리된 부분은 녹색으로 표시됩니다.

 

A1셀부터 A3셀까지의 값이 100으로 변경됐습니다.

(2) 떨어진 범위 지정

Sub 떨어진범위지정()
    Range("a1, c3").Select
End Sub

Range 객체 안에 "a1, c3"이라고 ,(콤마)를 이용해 범위를 지정하면 

A1셀과 C3셀만 선택됩니다.

 

아래와 같이 떨어진 범위지정 서브 프로시저를 작성한 다음 F5키를 눌러 실행하면

 

A1셀과 C3셀 두 개만 선택됩니다.

 

선택된 셀에 값을 대입하는 것은 위와 같습니다.

 

이번에는 selection = 200을 추가하고 실행해보겠습니다.

Sub 떨어진범위지정()
    Range("a1, c3").Select
    Selection = 200
End Sub

 

그러면 A1셀과 C3셀에 200이 대입됩니다.

(3) 연속된 범위 지정하기 2

이번에는 Range 객체 안에 Range객체를 이용해서 A1셀과 C3셀을 지정하고 실행하면

Sub 연속범위지정2()
    Range(Range("a1"), Range("c3")).Select
End Sub

 

위 (2)와는 달리 A1셀과 C3셀까지 사각형으로 된 영역이 선택됩니다.

 

(4) 연속된 범위 지정하기 3

Sub 연속범위지정3()
    Range("a1", "c3").Select
End Sub

 

또한 Range 안에 "a1", "c3"이라고 콤마를 이용해 입력하더라도 a1과 c3셀을 큰따옴표(")로 묶으면 떨어진 범위가 아니라 연속된 범위로 지정됩니다.

 

위 코드를 실행하면 (3)과 같이 A1셀에서 C3셀까지 연속된 범위가 선택됩니다.

 

 

나. Range와 Cells 이용하기

 

(1) 연속된 범위 지정

위 가의 (3)에서 Range 객체를 Cells 속성으로 대체할 수 있습니다.

Sub 연속범위지정4()
    Range(Cells(1, 1), Cells(3, 3)).Select
End Sub

range("a1")은 1행 1 열이므로 cells(1,1)로 대체할 수 있고,

range("c3")은 3행 3 열이므로 cells(3,3)으로 대체할 수 있습니다.

 

따라서, Range(Cells(1, 1), Cells(3, 3)).Select 가 되며

실행하면 위와 같은 결과가 됩니다.'

 

(2) 떨어진 범위 지정

셀 주소를 반환해주는 Address 속성과 &(결합 연산자)를 이용해 셀 주소 사이에 ,(콤마)를 삽입하면 떨어진 범위를 선택할 수 있습니다. 

Sub 떨어진범위지정2()
    Range(Cells(1, 1).Address & "," & Cells(3, 3).Address).Select
End Sub

 

위 코드를 실행하면 A1셀과 C3셀만이 선택됩니다.,

 

다. CurrentRegion 속성 이용하기

CurrentRegion은 커서를 기준으로 연속된 범위를 지정하는 속성으로 정렬하거나 피벗테이블 작성 시 커서를 연속된 범위의 안에 넣기만 하면 전체 영역이 선택되는 것과 같은 기능을 합니다.

 

아래는 A1셀을 기준으로 CurrentRegion을 선택하라는 구문입니다.

Sub 현재영역()
    Range("a1").CurrentRegion.Select
End Sub

 

위 구문을 실행하면 A1셀과 모두 연결되어 있기 때문에 A1셀부터 C8셀까지 모든 셀이 선택됩니다.

 

이때 B4셀 값을 Delete키를 눌러 지운 다음 다시 위 서브 프로시저를 실행하면 3행과 5행의 연결고리가 끊어져서 A1셀부터 C3셀까지의 영역만 선택됩니다.,

 

 

 

라. Range와 End 속성 이용하기

 

(1) End 속성

End속성은 셀에서 위, 아래, 왼쪽, 오른쪽 끝 셀을 반환해주는 속성입니다.

A2셀에서 오른쪽 끝 셀로 이동하려면 A1.End(xlToRight)라고 입력하며, 셀 주소를 구하려면 .address라고 셀 주소 속성을 이용합니다. msgbox는 메시지 박스를 표시하는 기능입니다. 

Sub 오른쪽끝셀주소구하기()
    MsgBox Range("a3").End(xlToRight).Address
End Sub

 

따라서, 위 코드를 실행하면 셀 주소 C3을 반환합니다.

 

확인 버튼을 눌러 닫습니다.

 

(2) 연속된 범위 구하기

 

Sub 연속범위지정5()
    Range("a1", Range("c10").End(xlUp)).Select
End Sub

 

위 코드에서 Range("c10"). End(xlUp)은 C10셀에서 위로 올라갔을 때 끝 셀을 의미하므로 C8셀이 됩니다. 만약 C8셀로 수정하면 맨 위셀은 C5셀이 됩니다. 이 때는 .address를 붙여도 되고 생략해도 됩니다.,

 

따라서 위 코드를 실행하면 A1셀부터 C8셀까지 모든 셀이 선택됩니다.,

 

범위를 선택하는 것은 VBA의 기초입니다. 연습하고 또 연습해야 합니다.

 

완성된 코드와 파일은 아래와 같습니다.

범위지정하기5.xlsm
0.01MB

반응형