상세 컨텐츠

본문 제목

【VBA 입문】Range로 셀의 범위 지정(Cells와의 구분)

IT & Programming/VBA 공부

by 그림아이 2022. 2. 24. 02:00

본문

반응형

Excel에서 작업할 때 셀 범위를 선택한다는 조작은 거의 반드시라고 해도 좋을 정도로 발생합니다. 자주 수행하는 작업만큼 VBA로 자동화하는 장점이 많다고 할 수 있습니다. VBA에서 셀을 선택하는 경우 검색해 보면 Range와 Cells라는 객체와 속성을 찾을 수 있습니다. 하지만 도대체 뭐가 다른지 구분하기가 어렵습니다. 이 기사에서는 「Range란 무엇인가」  「Range와 Cells의 차이」 라고 하는 기본적인 내용으로부터 다음과 같이 응용적인 내용까지 해설합니다.

 

  • Resize에서 셀 범위를 변경하는 방법
  • 오프셋으로 셀 범위를 지정하는 방법
  • Value에서 값을 가져오고 변경하는 방법
  • 범위를 지우는 방법 범위를 복사하는 방법
  • 범위를 배열로 변환하는 방법 Find에서 범위를 찾는 방법
  • Sort에서 범위를 정렬하는 방법

 

Range란?

Range 는 셀 범위를 지정할 때 사용하는 객체입니다. 예를 들어 A3에서 B5의 셀을 빨강으로 하고 싶을 때, A3에서 B5까지 드래그하여 범위 지정하고 나서 빨강으로 변경합니다. 그 범위를 지정하는 조작을 코드로 실현합니다. Range로 선택한 후에는 물론 셀의 색뿐만 아니라 문자색을 바꾸거나 테두리를 넣을 수 있습니다. 범위를 선택하는 객체로는 Cells 속성도 있습니다. 무엇이 다른지 비교하면서 보겠습니다.

 

Range는 여기가 다르다!

Range는 Cells와 비교하면 다음과 같은 특징이 있습니다.

  • 범위에 붙은 「이름」으로 호출할 수 있다
  • 여러 범위를 지정할 수 있습니다.
  • 시작 셀과 종료 셀을 지정할 수 있습니다.

 

Cells는 여기가 다르다!

반면 셀은 다음과 같은 특징이 있습니다.

  • 변수로 위치 지정 가능
  • 전체 시트를 지정할 수 있습니다.


그 밖에도 있습니다만 이 정도가 주된 특징입니다.

 

구분 예

한가지 기능을 알았는데, 어떤 경우에 어느 쪽을 구분하는지를 보겠습니다.

구분 1:범위는 고정인가 변동인가?

장표나 전표라면 레이아웃이 바뀌지 않기 때문에 Range가 적합합니다. 실행하지 않으면 범위가 결정되지 않으면 셀을 사용합니다.

구분 2 : 범위는 하나 이상인가?

A3에서 B6으로, C9에서 D12와 같은 여러 범위를 선택하는 것은 Range에서만 가능합니다.

구분 3 : 시트 전부, 행 또는 열의 경우

무조건 이러한 지정을 하는 경우, Cells를 사용합니다.

이 정도로 실제 사용 예를 다음에서 살펴 보겠습니다.

 

 

Range 사용법

빨리 Range의 사용법을 순서대로 살펴 보겠습니다.

Select에서 셀을 지정하는 방법

하나만 셀을 선택하고 싶을 때, 이와 같이 됩니다.

[서식]

  1. Range(“셀”)

[사용 예]

  1. Sub RangeSample1()
  2. Range( "A3" ).Select
  3. End Sub

[실행 결과]

VBE에서 실행하면 A3이 선택되었음을 알 수 있습니다.

배경색을 붙일 때는 이렇습니다.

[사용 예]

  1. Sub RangeSample2()
  2. Range( "A3" ).Interior.Color = RGB(250, 0, 0)
  3. End Sub

[실행 결과]

여러 셀을 범위로 지정하는 방법

방금 전에 하나의 셀을 선택했지만 이번에는 시작과 끝을 지정하여 범위를 지정합시다.

[서식]

  1. Range(“시작 셀: 종료 셀”)

[사용 예]

  1. Sub RangeSample3()
  2. Range( "A3:D6" ).Select
  3. End Sub

[실행 결과]

Range로 셀의 범위 지정

물론, 방금 전의 예를 응용해, 범위내를 착색하는 것도 가능합니다.

 

여러 독립 셀을 지정하는 방법

시작 셀 1에서 종료 셀 1, 시작 셀 2에서 종료 셀 2라는 느낌으로 여러 범위를 선택할 수 있습니다.

[서식]

  1. Range( "시작 셀 1 : 종료 셀 1, 시작 셀 2 : 종료 셀 2", ...).Select

[사용 예]

  1. Sub RangeSample4()
  2. Range( "A3:B6,C9:D12" ).Select
  3. End Sub

[실행 결과]

2개 이상의 범위도 선택할 수 있습니다.

 

범위에 붙은 이름으로 지정하는 방법

범위에 이름을 지정할 수 있으며 Range로 이름을 지정할 수 있습니다. A3에서 B5를 드래그하여 뒤집은 후 마우스 오른쪽 버튼을 클릭하고 "이름 정의"를 선택합니다.

그래서 이름을 '테스트'라고 합니다. 그 명명된 범위를 Range로 지정하는 것도 가능합니다.

[서식]

  1. Range(“범위 이름”)

[사용 예]

  1. Sub RangeSample5()
  2. Range( "테스트" ).Select
  3. End Sub

[실행 결과]

 

셀을 변수로 지정하는 방법

Range 메서드에서 변수를 사용하여 범위를 선택할 수도 있습니다.

[사용 예]

  1. Sub RangeSample6()
  2. For i = 1 ~ 5
  3. Range ( "A1:A" & i ). Select
  4. Next
  5. End Sub

[실행 결과]

그러나 변수를 사용하여 가변 범위를 지정할 때는 Cells를 사용하는 것이 일반적입니다.

[사용 예]

  1. Sub RangeSample7()
  2. Dim i as Integer
  3. For i = 1 to 5
  4. Range ( Cells ( 1 , 1 ), Cells ( i , 1 )). Select
  5. Next
  6. End Sub

실행 결과는 동일합니다.

 

Resize에서 셀 범위를 변경하는 방법

한 번 선택한 범위의 크기를 변경할 수 있습니다. A3에서 B6까지 4행 2열 범위 선택을 5행 5열로 확장

[서식]

  1. Range (“범위”). Resize (새 행 수, 새 열 수)

[사용 예]

  1. Sub RangeSample8 ()
  2. Range ( "A3:B5" ). Resize ( 5 , 5 ). Select
  3. End Sub

[실행 결과]

실행 후의 결과 밖에 보이지 않기 때문에 동작을 실감할 수 없습니다만, A3에서 B5의 범위가 A3을 기점으로 5행 5열이 된 것을 알 수 있습니다.

 

오프셋으로 셀 범위의 위치를 ​​변경하는 방법

A3에서 B6까지 지정한 범위를 크기는 그대로 움직일 수 있습니다.

[서식]

  1. Range (“범위”). Offset (행 방향으로 이동하는 셀 수, 열 방향으로 이동하는 셀 수)

[사용 예]

  1. Sub RangeSample9 ()
  2. Range ( "A3:B5" ). Offset ( 2 , 3 ). Select
  3. End Sub

[실행 결과]

이것도 결과만 확인합니다. A3에서 B5의 범위가 A3을 기점으로 2행 3열 움직인 것을 알 수 있습니다.

 

Value에서 값을 가져오고 변경하는 방법

Range 객체에서 Value 속성을 호출하여 셀의 값을 가져오거나 변경할 수 있습니다.

샘플 코드로 확인합시다.

  1. Sub RangeSample10 ()
  2. '셀 값 변경
  3. Range("A1").Value = "공부하는 엔지니어"
  4. '셀 값 얻기
  5. MsgBox Range ( "A1" ). Value
  6. End Sub

 

범위를 지우는 방법

지정된 셀 범위를 지우려면 Range 객체의 Clear 메서드를 사용합니다. 클리어하는 대상에 따라 사용하는 메소드가 바뀝니다. 목적에 맞는 방법을 사용합시다.

방법설명

Clear 모두
ClearComments 댓글
ClearContents 값과 수식
ClearFormats 서식
ClearNotes 댓글
ClearOutline 개요
ClearHyperlinks 하이퍼링크

ClearHyperlinks의 경우 Excel2010 이상에서 사용할 수 있습니다. 샘플 코드로 확인합시다.

다음과 같은 상태를 지웁니다.

  1. Sub RangeSample11 ()
  2. Range ( "A1:B2" ). Clear
  3. End Sub

실행 결과:

 

Find에서 범위를 찾는 방법

지정한 범위에 있는 값이 포함되어 있는지 검색하고 싶을 수 있습니다. 그런 경우 Find 메서드를 사용하여 검색합니다.

 

Sort에서 범위를 정렬하는 방법

지정한 범위를 순서대로 정렬하고 싶을 수 있습니다. 이 경우 Sort 메서드를 사용하여 정렬합니다.

 

VBA의 미래

VBA 기술을 배우고 업무를 효율적으로 자동화하고 싶습니다.

이렇게 생각하는 사람은 많을 것입니다. VBA의 용도는 다양하며,

  • VBA의 스킬이 있으면 이직 확률이 높아집니다.
  • 업무 효율화 기술은 수요가 높을 것입니다.

등이 예상됩니다. 확실히, 업무 효율화는 어느 기업도 목표로 하고 있어, 수요가 높은 것처럼 보입니다. 다만, VBA만 할 수 있는 것이 강점이 될까라고 하면, 조금 의문이 있습니다. VBA는 기본적으로 Excel에서만 사용할 수 있습니다. 그러나 최근에는 사내 서식을 스프레드 시트로 관리하는 기업도 늘어나고 있으며, 향후 엑셀 자체의 수요가 줄어들 가능성도 생각할 수 있습니다. 그렇게 되어 버리면, VBA를 공부해도 한계가 있기 마련입니다. 그렇게 생각하면 장래에 VBA의 수요는 그다지 높지 않다고 할 수 있습니다.

 

왜냐하면 누구나 잘하는 세상이 되었기 때문입니다. 그러니 남들보다 잘하기 위함이라기 보다 남들만큼 할 수 있기 위해 공부한다고 생각해야 합니다. 치열한 경쟁 사회로 나오기 직전인 대학교 졸업반 여러분들에게 특히 말씀 드리고 싶습니다. 공부는 대학교 때 끝나는 것이 아닙니다. 평생 공부할 각오로 사회에 나와야 하며 열심히 준비한 만큼 남들보다 고생을 덜 할 뿐 어쨌든 다같이 공부해야 합니다.

 

프로그래밍 (또는 코딩) 공부는 전공을 불문하고 모두가 공부해야 합니다!

 

 

728x90
반응형

댓글 영역