Excel & IT Info

아이엑셀러 닷컴, 엑셀러TV

VBA

[VBA 입문] 07강. 레인지 개체(2) ㅡ 행/열 단위로 범위 확장하기

권현욱(엑셀러) 2023. 9. 30. 08:00
반응형

들어가며

레인지 개체(Range Object)에 '접근'하는 것을 다른 말로, 레인지 개체를 '생성'한다라고도 합니다.  이번 시간에는 행이나 열 단위로 레인지 개체에 접근하는 방법에 대해 살펴봅니다. 다른 속성이나 방법에 비해 간단합니다. 바로 출발합니다.

이 콘텐츠는 <엑셀 VBA 파워 코딩의 정석>(권현욱 저, 디지털북스 출간)에서 편집, 인용한 것입니다.

Rows 속성

레인지 개체에 접근하기 위한 방법으로 Rows 속성을 사용할 수도 있습니다. 다음 코드를 VB Editor의 코드 창에 붙여 넣기하고 실행시켜 보세요.

Sub rowsProperty_1()
    Range("B3:E7").Select
    Selection.Rows = "Test"
End Sub

지정한 영역(B3:E7)의 모든 행에 'Test'라는 문자열을 삽입합니다.

[참고] VBA로 코딩할 때 Select, Activate는 꼭 필요한 경우가 아니면 쓰지 않는 것이 좋습니다. 효율과 속도를 떨어뜨리는 주범입니다. 위의 예에서는 쉽게 설명하기 위해 의도적으로 사용했습니다.

지정한 영역이 아니라 그 영역이 속한 행 전체에 어떤 값을 입력하려면 Rows 속성의 인수로 행 번호를 지정하면 됩니다.

Sub rowsProperty_2()
    Rows("3:7").Value = "Test"
End Sub

여기서 한 가지 중요한 사실을 알 수 있습니다. 같은 Rows 속성을 사용하더라도 앞에 어떤 개체가 선택되었느냐에 따라 적용 범위는 달라질 수 있다는 점에 유의하세요.

rowsProperty_1 프로시저에서는 B3:E7 영역을 선택한 상태에서 Rows 속성을 사용하였으므로 B3:E7 셀에만 지정한 문자가 입력되었지만, rowsProperty_2에서는 B3:E7 영역이 속한 행 전체에 영향을 미쳤습니다.

참고로 레인지 개체 앞에 아무것도 없으면 현재 시트(ActiveSheet)를 대상으로 합니다.


Columns 속성

Columns는 Rows 속성과 쓰임새가 같습니다. 다만 적용되는 방향이 행이냐 열이냐에 따라 차이가 있을 뿐입니다. 다음의 두 코드가 각각 어떻게 작동하는지 모듈에 작성한 다음, 실행(F5 키 사용)시켜서 확인해 보시기 바랍니다.

Sub columnsProperty_1()
    Range("B3:E7").Columns = "Test"
End Sub
Sub columnsProperty_2()
    Columns("B:E").Value = "Test"
End Sub

(이미지: 아이엑셀러 닷컴) columnsProperty_2 실행 결과


EntireRow, EntireColumn 속성

Range 개체가 이미 선택되어 있는 상태에서 선택 범위를 행이나 열 전체로 확대하는 방법에 대해 살펴보겠습니다. 이런 경우 사용할 수 있는 것이 EntireRow, EntireColumn 속성입니다. Rows/Columns와 마찬가지로 다른 건 같고 적용되는 방향이 다를 뿐이므로 함께 다룹니다.

다음 코드를 모듈에 입력하고 실행시켜 보세요. 이해를 돕기 위해 Select와 메시지 박스를 중간중간에 사용했습니다. 단계마다 메시지 박스가 나타나므로 진행되는 상황을 파악하기 쉬울 겁니다.

Sub entireProperty()
    Range("B2:E3").Select
    MsgBox "이제 선택된 범위를 행 전체로 확대합니다"
    Selection.EntireRow.Select
    MsgBox "선택 범위가 행 전체로 확대되었지요?"
    Range("B2:E3").Select
    MsgBox "이번에는 선택 범위를 열 전체로 확대합니다"
    Selection.EntireColumn.Select
    MsgBox "선택 범위가 열 전체로 확대되었지요?"
End Sub

특정한 영역을 그 영역이 속한 행 전체로 넓힐 때에는 EntireRow, 열 전체로 범위를 확장할 때에는 EntireColumn 속성을 사용하면 됩니다.


나가며

애써 외우려 하지 않아도 상식에 기반해 유추해 보면 알 수 있는 속성들이었습니다. 원래 프로그래밍이라는 것도 그렇습니다. 어디 하늘에서 난데없이 떨어진 것이 아니라 상식에 기반하고 있습니다. 이로써 또 하나의 미션을 완수하셨습니다. 축하합니다.

반응형