본문 바로가기

엑셀/VBA

VBA 셀(또는 범위) 지정 - Range, Cells

반응형

이전 글에서 Range의 속성과 메서드에 대해서 확인해 보았습니다. 그런데, VBA에서 셀 또는 셀 범위를 지정할 때 Range 뿐만 아니라 Cells라는 Worksheet의 속성도 있습니다. 이번에는 Cells라는 속성에 대해 알아보면서 Range와 함께 예제를 통해 확인해 보겠습니다.

 

VBA 엑셀 개체 다루기 - Range

 

VBA 엑셀 개체 다루기 - Range

VBA는 사용자가 오피스 프로그램을 보다 폭넓게 사용할 수 있도록 하기 위하여 Visual Basic 프로그래밍 언어로부터 왔습니다. 이번에는 VBA로 엑셀의 여러 가지 개체들을 사용할 수 있는데 이들 중

mr-johndoe.tistory.com

 

 

 

 

1. Cells

Range는 하나의 개체로서 사용되지만 Cells는 개체의 속성입니다. 하지만 아래 사용하는 방법을 보시면 마치 개체처럼 사용됩니다.

 

   Cells (행번호, 열번호)

 

위와 같이 사용 가능하지만 실제는 앞에 ActiveSheet. 이 생략되어 있습니다.

 

또한, Cells는 속성으로 Range 개체의 속성으로도 사용 가능합니다.

 

하지만 Cells는 셀 하나를 선택할 때는 사용 가능하지만 셀 범위를 선택할 수는 없습니다. 셀 범위를 선택할 때는 Range를 사용하여야 합니다.

 

2. 예제를 통해 Cells와 Range 확인

엑셀을 여시고 VBE창을 여시고 Module을 생성합니다. 그리고, 다음과 같이 Module 창에 코드를 작성합니다.

 

   Public Sub 셀선택()

      Range("A1") = 13

      Cells(1, 2) = 10

      ActiveSheet.Cells(2, 2) = 11

   End Sub

 

Range("A1") = 13

       => A1 셀에 값으로 13을 입력하라는 의미입니다.

 

Cells(1, 2) = 10

       => 1행, 2열 셀 즉, B1 셀에 10을 입력하라는 의미입니다.

 

ActiveSheet.Cells(2, 2) = 11

       => 2행, 2열 셀 즉, B2 셀에 11을 입력하라는 의미입니다. 윗 줄의 코드는 ActiveSheet. 이 생략되어 있다는 것을 보여드리기 위해 입력하였습니다.

 

 

 

이번에는 셀 범위를 지정하는 경우 Range를 사용하는 예를 확인해 보겠습니다.

다음 [그림 1]과 같이 엑셀 시트에 데이터를 입력합니다. 꼭 그림과 같은 데이터를 입력하지 않고 여러분이 원하시는 아무 데이터나 입력하시면 됩니다.

 

Range_셀_선택_삭제_예제
[그림 1] Range 셀 선택 - 삭제

 

그리고, 다음과 같이 Module 창에 코드를 작성합니다.

 

   Public Sub 셀범위선택()

      Range("A1:D1").Clear

      Range("A2", "D2").Clear

   End Sub

 

코드를 다 작성하시고 실행을 시키시면 A1 셀부터 D1 셀에 입력한 데이터와 A2 셀부터 D2 셀에 입력한 데이터가 삭제되는 것을 보실 수 있습니다. 

 

그러면 이번에는 Range의 속성으로 Cells를 사용하는 예를 확인해 보겠습니다.

다음과 같이 Module 창에 코드를 작성합니다.

 

   Public Sub Cells속성()

      Range("B1:D1").Cells(1, 1) = 10

      Range("B1:D1").Cells(1, 2) = 11

      Range("B1:D1").Cells(2, 1) = 12

   End Sub

 

위의 코드를 실행하면 B1 셀에는 10이, C1 셀에는 11이, B2 셀에는 12가 입력되는 것을 보실 수 있습니다.

 

코드를 살펴보면,

 

Range("B1:D1").Cells(1, 1) = 10

       => B1 셀부터 D1 셀 범위에서 1행 1열은 범위 시작 셀로 B1 셀을 가리킵니다. 그러므로, B1 셀에 10을 입력하라는 의미입니다.

 

Range("B1:D1").Cells(1, 2) = 11

       => B1 셀부터 D1 셀 범위에서 1행 2열은 범위 시작 셀에서 1열 우측으로 이동한 C1 셀을 가리킵니다. 그러므로, C1 셀에 11을 입력하라는 의미입니다.

 

Range("B1:D1").Cells(2, 1) = 12

       => B1 셀부터 D1 셀 범위에서 2행 1열은 범위 시작 셀에서 1행 아래로 이동한 B2 셀을 가리킵니다. 그러므로, B2 셀에 12를 입력하라는 의미입니다.

 

반응형