이전 글에서 Range의 속성과 메서드에 대해서 확인해 보았습니다. 그런데, VBA에서 셀 또는 셀 범위를 지정할 때 Range 뿐만 아니라 Cells라는 Worksheet의 속성도 있습니다. 이번에는 Cells라는 속성에 대해 알아보면서 Range와 함께 예제를 통해 확인해 보겠습니다.
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]과 같이 엑셀 시트에 데이터를 입력합니다. 꼭 그림과 같은 데이터를 입력하지 않고 여러분이 원하시는 아무 데이터나 입력하시면 됩니다.
그리고, 다음과 같이 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를 입력하라는 의미입니다.
'엑셀 > VBA' 카테고리의 다른 글
VBA Range의 SpecialCells 속성 이용하기 (0) | 2021.12.11 |
---|---|
엑셀 데이터를 Table로 사용하는 것을 VBA로 구현 - CurrentRegion (0) | 2021.10.20 |
VBA 엑셀 개체 다루기 - Range (0) | 2021.10.18 |
VBA WorksheetFunction 사용 (0) | 2021.10.13 |
VBA 수식 입력하기 - Formula (0) | 2021.10.12 |