강좌(교육)

[엑셀 VBA강좌] VBA_09 엑셀의 주요 개체의 이해 : Range Object, Cells Object엑셀교실

조아0415 2016. 12. 15. 21:59
[엑셀 VBA강좌] VBA_09 엑셀의 주요 개체의 이해 : Range Object, Cells Object엑셀교실

 

 

Range 오브젝트는 VBA로 프로그래밍을 할 때 가장 많이 사용하는 가장 중요한 오브젝트 입니다.

엑셀에 입력되는 대부분의 데이터들이 바로 Range 오브젝트를 통해 입력됩니다.

Range 오브젝트의 개념만 잘 이해한다면 나머지 오브젝트에도 쉽게 다가가실 수 있을 것입니다.

 

 

Range 오브젝트는 Worksheet 오브젝트의 하위 오브젝트로 시트 내에 한 개 또는 복수 개의 셀들로 이루어집니다.

범위를 의미하는 Range 오브젝트에 주소를 전달하는 방법을 통해 셀 하나 또는 범위에 접근해 작업을 할 수 있습니다.

 

우선 Range 오브젝트의 중요한 구성원(속성, 메서드 등)들은 살펴보겠습니다.

 

 

 

VBA에서 가장 중요한 오브젝트 중 하나인 Range 오브젝트에 자유자재로 접근하기 위한 첫번째 과제는 우선 셀을 선택하는 것입니다.

그러기 위해서는 Range 속성과 Cells 속성의 특성을 잘 이해하고 있어야 합니다.

두 속성에는 각각 어떤 장단점이 있는 지, 어떤 경우에 사용하면 좋은지 잘 정리해 두시기 바랍니다.

 

 


Range 속성

 

다음 코드를 실행하면 'Sheet1' 시트의 A1 셀에 "예스폼 엑셀교실"이라는 텍스트가 입력됩니다.

 

 

이것은 Worksheets("Sheet1")이라는 워크시트 오브젝트의, Range("A1")이라는 레인지 오브젝트의, Value 속성값을 "예스폼 엑셀교실"이라고 지정해 준 것입니다.

Range 오브젝트의 디폴트(default) 속성값은 Value입니다.

디폴트 속성은 속성명을 따로 붙이지 않아도 아래 두번째 코드와 같이 붙인 것으로 해석하게 됩니다.

 

 

이번에는 여러 셀에 동일한 값을 넣어볼까요?

혹 입력하려는 위치에 다른 값이 들어있으면 메시지를 표시하고 실행합니다.

 

 

 

이번에는 불연속적인 여러 개의 셀에 값을 넣는 방법에 대해 살펴보겠습니다.

 

 

CurrentRegion은 현재 영역, 즉 인접해 있는 상/하/좌/우의 영역을 반환해 주는 속성입니다.

다음 그림에서 현재 A1 셀이 선택된 상태에서 Range("A1").CurrentRegion.Select라고 하면 A1 셀과 값이 있는 주변의 인접한 셀이 모두 선택됩니다.

 

 

 

Cells 속성

 

Cells 속성을 사용해도 셀을 선택할 수 있습니다.

다음 코드를 실행하면 현재 시트의 B1 셀에 "예스폼 엑셀교실"을 입력합니다.

 

 

Cells 속성의 경우, Cells(행, 열)의 형식으로 표기합니다.

Cells의 인수의 순서는 Range 속성의 표현 방법과는 반대이므로 주의하시기 바랍니다.

 

 

Cells 속성으로 셀 범위를 선택하고자 할 경우 Range 속성과 조합하여 사용할 수 있습니다.

 

 

Cells 속성 앞에 어떤 상위의 개체도 붙이지 않으면 현재 워크시트를 대상으로 합니다.

특정 워크시트 개체를 앞에 붙이면 당연히 지정한 워크시트에 접근한 다음 작업을 합니다.

 

 

다음은 'Yesform' 시트의 A2 셀에 지정한 값을 입력해보겠습니다.

 

 

 

이제 Cells 속성에 대해서도 이해가 잘 되셨나요? ^^;

그럼 제가 한가지 문제를 드려보겠습니다.

 

 

위와 같이 명령을 입력하였다면 "예스폼 엑셀교실"이라는 텍스트는 어느 셀에 입력될까요? ^^;

직접 명령을 입력해보시면 결과에 대해서는 쉽게 이해하실 수 있을 것입니다.

 

 

지금까지 Range 속성과 Cells 속성에 대해 살펴보았습니다.

그런데 Cells 속성의 경우, 정의된 이름을 사용할 수 없으며, 여러 셀 범위를 설정할 때에도 단독으로는 사용할 수 없어 필히 Range 속성과 조합을 해야 합니다.

 

 

그렇다면 위와 같이 불편하게만 보이는 Cells 속성의 장점으로는 뭐가 있을까요?

Cells 속성의 가장 큰 장점은 인수에 숫자값을 사용할 수 있다는 것입니다.

프로그래밍을 하다보면 For문이나 Do문과 같은 반복문을 매우 많이 사용하게 됩니다.

반복문을 이용하여 아래와 같이 구구단 테이블을 만드는 프로시져를 작성할 경우 Cells 속성의 인수에 변수를 대입함으로써 간단하게 작성할 수 있게 됩니다.

 

 

만약 Range 속성만으로 이러한 것을 만들어야 한다면 프로그래밍이 좀 더 복잡해질 것입니다.

이런 경우 For문이나 Do문과 같은 반복문에서 Cells 속성을 사용하면 간단히 프로그래밍할 수 있습니다.