Range 개체는 엑셀 VBA에서 셀 또는 셀 범위를 조작하는 가장 중요한 개체 중 하나입니다. Range 개체를 사용하여 값을 가져오거나 설정할 수 있으며, 서식 변경, 복사/붙여넣기, 수식 입력 등의 다양한 작업을 수행할 수 있습니다.
1. 기본 사용법
✅ 특정 셀 지정
Range("A1").Value = "Hello" ' A1 셀에 "Hello" 입력
또는 Cells 개체를 사용할 수도 있습니다.
Cells(1, 1).Value = "Hello" ' A1과 동일한 표현 (행, 열)
2. 여러 개의 셀 선택
✅ 범위 선택
Range("A1:C10").Value = "Hi" ' A1부터 C10까지 "Hi" 입력
Range("A1“,”C10").Value = "Hi" ' A1부터 C10까지 "Hi" 입력
Range(Cells(1, "A"), Cells(10, "C")).Value = "Hi" ' A1부터 C10까지 "Hi" 입력
[A1:C10].Value = "Hi" ' A1부터 C10까지 "Hi" 입력
Range("A1, C1, E1").Value = "Hello" ' A1, C1, E1에 "Hello" 입력
3. Range 속성과 메서드
✅ 주요 속성(Properties)
속성
|
설명
|
예제
|
Value
|
셀 값을 가져오거나 설정
|
Range("A1").Value = 100
|
Formula
|
수식 입력
|
Range("A1").Formula = "=SUM(B1:B5)"
|
Interior.Color
|
배경 색상 변경
|
Range("A1").Interior.Color = RGB(255,0,0) (빨강)
|
Font.Bold
|
글씨 굵게
|
Range("A1").Font.Bold = True
|
Address
|
셀 주소 반환
|
MsgBox Range("A1").Address
|
✅ 주요 메서드(Methods)
메서드
|
설명
|
예제
|
Select
|
범위 선택
|
Range("A1:B2").Select
|
Copy
|
복사
|
Range("A1").Copy Range("B1")
|
ClearContents
|
내용만 지우기
|
Range("A1:B2").ClearContents
|
Clear
|
모든 서식 및 내용 삭제
|
Range("A1:B2").Clear
|
Resize
|
크기 조정
|
Range("A1").Resize(2,3).Value = "Data"
|
Offset
|
위치 이동
|
Range("A1").Offset(1,1).Value = "Moved"
|
4. Range 개체 활용 예제
📌 1) 특정 범위에 값 입력하기
Sub 입력()
Range("A1:A5").Value = 100 ' A1부터 A5까지 100 입력
End Sub
|
📌 2) 특정 범위 복사 & 붙여넣기
Sub 복사_붙여넣기()
Range("A1:A5").Copy Destination:=Range("B1:B5")
End Sub
|
📌 3) 조건에 따라 값 변경하기
Sub 값_변경()
Dim rng As Range
For Each rng In Range("A1:A10")
If rng.Value > 50 Then
rng.Font.Bold = True ' 50보다 크면 굵게 표시
End If
Next rng
End Sub
|
5. 셀 범위 동적 지정 (Last Row 사용)
Sub 마지막행_찾기()
Dim LastRow As Long
LastRow = Cells(Rows.Count, 1).End(xlUp).Row ' A열에서 마지막 값이 있는 행 찾기
MsgBox "마지막 데이터가 있는 행 번호: " & LastRow
End Sub
|
6. 특정 값 찾기
Sub 값_찾기()
Dim rng As Range
Set rng = Range("A1:A10").Find(What:="Apple", LookAt:=xlWhole)
If Not rng Is Nothing Then
MsgBox "Apple은 " & rng.Address & " 위치에 있습니다!"
Else
MsgBox "Apple을 찾을 수 없습니다."
End If
End Sub
|
7. 특정 값이 있는 행 숨기기
Sub 특정값_숨기기()
Dim rng As Range
For Each rng In Range("A1:A20")
If rng.Value = "숨기기" Then
rng.EntireRow.Hidden = True
End If
Next rng
End Sub
|
📝 정리
- Range("A1") → 특정 셀 선택
- Range("A1:B2") → 여러 개의 셀 선택
- .Value, .Formula, .Interior.Color 등 속성 사용 가능
- .Select, .Copy, .ClearContents 등의 메서드로 셀 조작
- Offset, Resize 등으로 동적 범위 조정 가능
엑셀 VBA에서 Range 개체는 셀을 다룰 때 필수적인 요소이며, 위 개념을 잘 활용하면 효율적으로 매크로를 작성할 수 있습니다! 😊