Exceller Home > VBA 강좌 > VBA 입문강좌

Exceller's VBA 입문강좌

최초 작성일 : 2004-05-18
최종 수정일 : 2004-12-03

강좌 읽음수 : 102,288회
작성자 : Exceller (권현욱, exceller@amorepacific.com)

강좌 제목 : 레인지 오브젝트 - Rows, Columns, EnteireRow, EnteirColumn 속성

초등학교 때 교과서에서 이런 것을 배운 기억이 납니다.
"대한민국은 뚜렷한 사계절이 있다. 봄, 여름, 가을, 겨울이 그것이다..."

이제 이 구절은 이렇게 바뀌어야 하지 않을까 싶습니다.
"대한민국은 뚜렷한 두 계절과 어중간한 두 계절이 있다. 짧은 봄, 긴 여름, 잠깐 스쳐 지나가는 가을, 또 긴 겨울... "

어쨌거나... 계절은 시시각각 다른 모양새로 우리에게 다가옵니다 (아~ 덥다!!).


VBA 입문강좌 : 중요한 오브젝트 몇 가지


가. 워크북 오브젝트(Workbook Object)

나. 워크시트 오브젝트(Worksheet Object)

다. 레인지 오브젝트(Range Object)


지난 시간에 Range 오브젝트를 생성하는 방법 두 가지를 소개해 드렸습니다.

"오브젝트를 생성하다니, 그런걸 언제 가르쳐 줬어?"

눈을 동그랗게 뜨고 이렇게 항의 할려고 준비하는 분이 계실 것입니다.

'오브젝트에 접근'한다는 것을 흔히 '오브젝트를 생성'한다 라고 표현하기도 합니다. 엄밀히 말하자면 '오브젝트를 생성한 다음에 접근'한다고 해야 하겠지만 말입니다. 하여튼 이번 시간에는 또 다른 방법으로 레인지 오브젝트를 생성하는 방법에 대해 살펴 보겠습니다.

이번 강좌는 Exceller의 VBA 책에서 약간 편집 / 인용한 것입니다. ^^V


Rows 속성, Columns 속성

Range 오브젝트를 만들어 주는 또 다른 방법으로 Rows나 Columns 속성을 사용할 수도 있습니다. 다음 코드를 실행시켜 보세요.

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

말 그대로 B3:E7 영역의 모든 행들(그러니까 결국은 지정한 영역 내의 모든 셀들)에 'Test' 라는 문자열을 채우게 됩니다. 만약 특정한 행 전체에 어떤 값을 입력하려면 다음과 같이 표현합니다.

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

    ' 원래 이 문장은 ActiveSheet.Rows("3:7").Value = "Test" 라고 해 주어야 할 것을

    ' 축약해서 표현한 형태입니다.
End Sub

여기서 우리는 한 가지 중요한 사실을 알 수 있습니다. 같은 Rows 속성을 사용하더라도 앞에 어떤 오브젝트가 선택되었느냐에 따라 적용 범위는 전혀 달라진다는 것입니다. 즉 앞의 Rows_Property_1 프로시저에서는 특정한 영역("B3:E7")을 먼저 선택하고 Rows 속성을 사용하였으므로 B3:E7 셀에만 'Test'라는 문자열 값이 입력되었습니다. 반면 Rows_Property_2 프로시저에서는 지정한 행 전체에 영향을 미쳤습니다.

요약하자면, 앞의 프로시저는 Range 오브젝트에 대해 Rows 속성을 이용한 예제이고, 뒤의 프로시저는 워크시트 오브젝트에 대해 Rows 속성을 사용한 예제입니다.

Columns 속성의 경우에도 Rows 속성의 경우와 동일합니다. 다음의 두 코드가 각각 어떻게 작동하는지 모듈 시트에 복사하신 다음 직접 확인해 보시기 바랍니다.

Sub Columns_Property_1()

    Range("B3:E7").Select

    Selection.Columns = "Test"

End Sub

Sub Columns_Property_2()

    Columns("B:E").Value = "Test"

End Sub

 


EntireRow 속성, EntireColumn 속성

이번에는 Range 오브젝트가 이미 선택되어 있는 상태에서 범위를 행 전체로 또는 열 전체로 확대하는 방법에 대해 살펴보겠습니다.

Sub Rows_Property_3()

    Range("B2:E3").Select

    MsgBox "이제 선택된 범위를 행 전체로 확대합니다", , "www.iExceller.com"

    Selection.EntireRow.Select

    MsgBox "선택 범위가 행 전체로 확대되었지요?", , "www.iExceller.com"

    Range("B2:E3").Select

    MsgBox "이번에는 선택 범위를 열 전체로 확대합니다.", , "www.iExceller.com"

    Selection.EntireColumn.Select

    MsgBox "선택 범위가 열 전체로 확대되었지요?", , "www.iExceller.com"

End Sub
 

보신 바와 같이 작업 대상 영역을 특정한 범위에서 행 전체로 넓힐 때에는 Rows 속성 대신 EntireRow 속성을, 열 전체로 범위를 확장할 때에는 Columns 속성 대신 EntireColumn 속성을 사용하면 됩니다. 쉽지요?

이번 강좌는 짧게 여기까지...


Previous

Next

Creative Commons License