Range 개체를 이용하여 셀 (또는 범위)를 선택하는 것은 매크로를 개발할 때 가장 핵심이 된다고 합니다 그래서 반드시 이해하고 싶습니다.
🚗 셀 하나를 선택할 때
A1 셀을 참조하는 경우, 다음과 같이 세 가지 코드를 사용할 수 있어요~
① Range("A1") → ActiveSheet.Range("A1")와 같은 뜻 입니다
② Cells(1,1)
③ Cells(1,"A")
① Range 개체에 참조할 셀 주소를 직접 전달합니다
② Cells 속성에 행 인덱스 번호와 열 인덱스 번호를 전달해 1행, 1열 위치인 A1 셀을 참조하도록 지정합니다. Cells 속성 앞에 아무런 상위 개체가 전달되지 않았다면 ActiveSheet 개체가 생략된 것으로 이해하면 됩니다. Cells 속성은 Range 개체 하위에서도 사용할 수 있으며, 다음 코드도 A1 셀을 참조합니다
Range("A1:A10").Cells(1)
위 코드는 A1:A10 범위의 첫 번째 셀을 의미하므로, A1 셀을 지정한 것과 같으며
Range("A1:A10").Cells(1,1)에서 두 번째 열 번호(빨간색)가 생략된 것입니다. Cells 속성에서 두 번째 열 번호가 생략되면 1이 생략된 것으로 간주합니다
③ Cells 속성의 열 인덱스 번호는 열 주소를 의미하는 텍스트 값으로 전달해도 됩니다.
Cells 속성 |
1) 단 하나의 셀을 참조할 때 주로 사용 |
2) For ... Next 순환문에서 자주 사용 |
🚗🚓 연속된 범위를 선택할 때
A1 셀에서 A10 셀까지 연속된 범위를 참조할 때는 다음과 같이 두 가지 코드를 사용할 수 있습니다
① Range("A1:A10")
② Range("A1","A10")
① Range 개체 안에서 큰따옴표(" ") 로 묶어서 셀 범위를 지정합니다
② Range 개체 안에서 쉼표(,) 구분자를 이용해 셀 범위를 지정합니다. 첫 번째 셀주소는 표의 왼쪽 상단 셀 주소를 의미하고, 두 번째 셀 주소는 표의 오른쪽 하단 셀 주소를 의미합니다. 두 주소를 연결하는 전체 범위를 반환하게 됩니다. 그러므로 A1:A10 범위를 참조하는 것이 됩니다. 이 방법은 수식을 작성할 때 셀을 참조하는 방법과는 다르며, 매우 자주 사용하는 방식이라고 합니다. 잘 기억해 둘 필요가 있습니다
🚍🚒🛴떨어진 범위(=다중 범위)를 선택할 대
Range("A1:A10,C1:C10")
Union(Range("A1:A10"),Range("C1:C10"))
범위 A1:A10과 범위 C1:C10 와 같이 떨어진 범위를 한 번에 선택하려고 할 때는
큰따옴표(" " ) 안에서 참조할 범위를 쉼표(,) 구분자로 구분해 사용하거나
Application 개체의 Union 매서드를 이용하면 됩니다
코드 예제 : 선택된 범위가 《연속된 범위》 인지, 아니면 《다중 범위》 인지를 확인하려면 다음과 같이 코드를 입력합니다
Sub 연속범위_다중범위_구별() | |
Dim 선택범위 As Range Dim 주소() As Variant, i As Integer Dim 메시지 As String If Selection.Areas.Count >1 Then For Each 선택범위 In Selection.Areas ReDim Preserve 주소(i) 주소(i) = 선택범위.Address i = i +1 Next 메시지 = "다중범위를 선택했습니다" 메시지 = 메시지 & vbCr & vbCr 메시지 = 메시지 & Join(주소,vbCr) Else If Selection.Count = 1 Then 메시지 = "선택된 범위가 1개 입니다" Else 메시지 = "연속된 범위를 선택했습니다" End If 메시지 = 메시지 & vbCr & vbCr 메시지 = 메시지 & Selection.Address End If Msgbox 메시지 |
|
End Sub |
위의 코드를 설명해 보겠습니다
🚗 다른 워크시트의 범위를 선택할 때
Range 개체가 독립적으로 사용되면 Activesheet 개체가 모두 생략된 것으로 이해하시면 됩니다.
즉, Range("A1") 는 ActiveSheet.Range("A1")와 같은 뜻 입니다.
그러므로 다른 워크시트의 범위를 선택하려면 해당 워크시트 개체[WorkSheets("Sheet2").]를 먼저 지정해 주어야 합니다
WorkSheets("Sheet2").Range("A1:A10")
위의 코드는 Range 개체의 상위 개체인 Worksheets 컬렉션을 이용해 Sheet2 워크시트의 A1:A10 범위를 참조합니다
Worksheets 컬렉션 대신 Sheets 컬렉션을 사용해도 동일한 결과를 얻을 수 있습니다
Sheets("Sheet2").Range("A1:A10")
'100_Apps > VBA, Excel, Google spreadsheet' 카테고리의 다른 글
📌105 Excel VBA 📌 《End 속성》을 이용해, 떨어진 동적 범위 정하기 (0) | 2022.08.10 |
---|---|
📌104 Excel VBA 📌 《CurrentRegion 속성》을 이용하여 《연속된》 《동적 범위》 참조하기 (0) | 2022.08.07 |
📌102 Excel VBA 📌 Range 개체의 주요 구성원 이해하기 (0) | 2022.08.06 |
🧨 엑셀 VBA / 코딩 모음 (0) | 2022.07.31 |
🧨 엑셀 VBA / Dictionary 개체_실무 (0) | 2022.07.31 |