지난 시간에 Range 오브젝트를 생성하는 방법 두 가지를 소개해 드렸습니다.
"오브젝트를 생성하다니, 그런 걸 언제 가르쳐 줬어요?"
눈을 동그랗게 뜨고 이렇게 항의(?)하려고 준비하는 분이 있으리라 생각합니다.
'오브젝트에 접근'한다는 것을 흔히 '오브젝트를 생성'한다 라고 표현하기도 합니다. 엄밀히 말하자면 '오브젝트를 생성한 다음에 접근'한다고 해야 하겠지만 말입니다. 하여튼 이번 시간에는 레인지 오브젝트를 생성하는 또 다른 방법에 대해 살펴보겠습니다.
이번 강좌는 Exceller의 VBA 책에서 편집, 인용한 것입니다 (<VBA에 날개달기>, 권현욱 저, 디지털북스 출간).
Rows 속성
Range 오브젝트에 접근하기 위한 또 다른 방법으로 Rows나 Columns 속성을 사용할 수도 있습니다. 다음 코드를 실행해 보세요.
Sub Rows_Property_1()
Range("B3:E7").Select
Selection.Rows = "Test"
End Sub
CODE
B3:E7 영역의 모든 행(그러니까 결국은 지정한 영역 내의 모든 셀)에 'Test' 라는 문자열을 채워 넣습니다.
Rows 속성
지정한 영역이 아니라 특정한 행 전체에 어떤 값을 입력하려면 이렇게 표현합니다.
Sub Rows_Property_2()
Rows("3:7").Value = "Test"
' ActiveSheet.Rows("3:7").Value = "Test" 라고 할 것을 축약한 형태
End Sub
CODE
여기서 우리는 한 가지 중요한 것을 알 수 있습니다. 같은 Rows 속성을 사용하더라도 앞에 어떤 오브젝트가 선택되었느냐에 따라 적용 범위는 전혀 달라진다는 사실입니다. 즉 Rows_Property_1 프로시저에서는 특정한 영역("B3:E7")을 먼저 선택하고 Rows 속성을 사용하였으므로 B3:E7 셀에만 'Test'라는 문자열 값이 입력되었습니다. 반면 Rows_Property_2 프로시저에서는 지정한 행 전체에 영향을 미쳤습니다.
정리하자면, 앞의 코드는 Range 오브젝트에 대해 Rows 속성을 이용한 것이고, 뒤의 코드는 워크시트 오브젝트에 대해 Rows 속성을 사용한 예제입니다.
Columns 속성
Columns 속성도 Rows 속성의 경우와 동일합니다. 다음의 두 코드가 각각 어떻게 작동하는 지 모듈에 붙여넣은 다음 직접 확인해 보시기 바랍니다.
Sub Columns_Property_1()
Range("B3:E7").Select
Selection.Columns = "Test"
End Sub
CODE
Sub Columns_Property_2()
Columns("B:E").Value = "Test"
End Sub
CODE
EntireRow, EntireColumn 속성
이번에는 Range 오브젝트가 이미 선택되어 있는 상태에서 선택 범위를 행 전체 또는 열 전체로 확대하는 방법에 대해 살펴보겠습니다.
Sub Entire_Property()
Range("B2:E3").Select
MsgBox "이제 선택된 범위를 행 전체로 확대합니다"
Selection.EntireRow.Select
MsgBox "선택 범위가 행 전체로 확대되었지요?"
Range("B2:E3").Select
MsgBox "이번에는 선택 범위를 열 전체로 확대합니다"
Selection.EntireColumn.Select
MsgBox "선택 범위가 열 전체로 확대되었지요?"
End Sub
CODE
영역을 특정한 범위에서 행 전체로 넓힐 때에는 Rows 대신 EntireRow 속성을, 열 전체로 범위를 확장할 때에는 Columns 대신 EntireColumn 속성을 사용하면 됩니다.
이번 강의는 짧게 여기까지...