Range 개체

Set 구문

노만e 2025. 3. 11. 06:13

엑셀 VBA에서 Set 문은 객체(Object) 타입의 변수를 할당할 때 사용됩니다.

즉, 워크시트, 범위, 워크북, 차트 등의 객체를 변수에 저장하고 활용할 때 필요합니다.

1. 기본 문법

Set 변수명 = 객체

📌 Set을 사용해야 하는 경우:

  • Range(셀 범위)
  • Worksheet(워크시트)
  • Workbook(통합 문서)
  • Chart(차트)
  • Scripting.Dictionary(딕셔너리)
  • Collection(컬렉션)

📌 Set을 사용하지 않는 경우:

  • 숫자, 문자열, Boolean, 배열 등 기본 데이터 타입

2. 기본 예제

📌 Range 객체 할당

Sub Set_예제1()
Dim rng As Range
Set rng = Range("A1:A5") ' A1:A5 범위를 rng에 저장
rng.Interior.Color = RGB(255, 255, 0) ' 노란색 배경 적용
End Sub

📌 Set rng = Range("A1:A5") → A1:A5 범위를 rng 변수에 저장

📌 rng.Interior.Color = RGB(255, 255, 0) → 노란색 배경 적용


📌 Worksheet 객체 할당

Sub Set_예제2()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Sheet1") ' Sheet1을 ws 변수에 저장
ws.Range("A1").Value = "Hello, World!" ' A1에 값 입력
End Sub

📌 Set ws = ThisWorkbook.Sheets("Sheet1") → Sheet1을 ws 변수에 저장

📌 ws.Range("A1").Value = "Hello, World!" → Sheet1의 A1에 값 입력


📌 Workbook 객체 할당

Sub Set_예제3()
Dim wb As Workbook
Set wb = Workbooks("Sample.xlsx") ' Sample.xlsx 파일을 wb 변수에 저장
wb.Sheets("Sheet1").Range("A1").Value = "데이터 입력"
End Sub

📌 Set wb = Workbooks("Sample.xlsx") → 열려 있는 "Sample.xlsx"를 wb 변수에 저장

📌 wb.Sheets("Sheet1").Range("A1").Value = "데이터 입력" → Sheet1의 A1에 데이터 입력


📌 변수를 해제 (Nothing 사용)

Sub Set_해제()
Dim rng As Range
Set rng = Range("A1:A5") ' 범위 할당
rng.Interior.Color = RGB(255, 0, 0) ' 빨간색 배경 적용
Set rng = Nothing ' 객체 해제
End Sub

📌 Set rng = Nothing → 객체 변수를 해제하여 메모리에서 제거


3. Set을 활용한 동적 데이터 조작

📌 마지막 데이터가 있는 행 찾기

Sub 마지막_행_찾기()
Dim lastRow As Range
Set lastRow = Range("A1").End(xlDown) ' A1에서 마지막 데이터 행 찾기
lastRow.Interior.Color = RGB(0, 255, 0) ' 초록색 배경 적용
End Sub

📌 Set lastRow = Range("A1").End(xlDown) → A1에서 마지막 값이 있는 행을 찾아 저장

📌 lastRow.Interior.Color = RGB(0, 255, 0) → 배경색 초록 적용


📌 빈 행 찾기

Sub 빈행_찾기()
Dim emptyRow As Range
Set emptyRow = Range("A1").End(xlDown).Offset(1, 0) ' 마지막 데이터 아래 행 찾기
emptyRow.Value = "새로운 데이터" ' 데이터 입력
End Sub

📌 마지막 데이터 아래 첫 번째 빈 행을 찾아 "새로운 데이터" 입력


4. Set을 활용한 컬렉션 및 딕셔너리

📌 Collection 객체 활용

Sub Collection_예제()
Dim col As Collection
Set col = New Collection ' 컬렉션 객체 생성
col.Add "사과"
col.Add "바나나"
col.Add "오렌지"
MsgBox col(1) ' "사과" 출력
End Sub

📌 Set col = New Collection → 새로운 컬렉션 객체 생성

📌 col.Add "사과" → 데이터 추가

📌 MsgBox col(1) → 첫 번째 요소 출력


📌 Dictionary 객체 활용

Sub Dictionary_예제()
Dim dict As Object
Set dict = CreateObject("Scripting.Dictionary") ' 딕셔너리 생성
dict.Add "Apple", "사과"
dict.Add "Banana", "바나나"
MsgBox dict("Apple") ' "사과" 출력
End Sub

📌 Set dict = CreateObject("Scripting.Dictionary") → 딕셔너리 객체 생성

📌 dict.Add "Apple", "사과" → 키-값 추가

📌 MsgBox dict("Apple") → "사과" 출력


5. Set을 활용한 차트 조작

Sub 차트_생성()
Dim ch As ChartObject
Set ch = ActiveSheet.ChartObjects.Add(Left:=50, Top:=50, Width:=400, Height:=300)

With ch.Chart
.ChartType = xlColumnClustered
.SetSourceData Source:=Range("A1:B5")
.HasTitle = True
.ChartTitle.Text = "매출 현황"
End With
End Sub

📌 새 차트를 생성하고 A1:B5 데이터를 이용해 막대 그래프를 만듦


📝 정리

기능
VBA 코드
Range 객체 할당
Set rng = Range("A1:A5")
Worksheet 객체 할당
Set ws = ThisWorkbook.Sheets("Sheet1")
Workbook 객체 할당
Set wb = Workbooks("Sample.xlsx")
Set 해제 (Nothing)
Set rng = Nothing
마지막 데이터가 있는 행 찾기
Set lastRow = Range("A1").End(xlDown)
빈 행 찾기
Set emptyRow = Range("A1").End(xlDown).Offset(1, 0)
컬렉션 객체 사용
Set col = New Collection
딕셔너리 객체 사용
Set dict = CreateObject("Scripting.Dictionary")
차트 객체 생성
Set ch = ActiveSheet.ChartObjects.Add(...)

🔥 VBA에서 Set을 사용하면 객체를 효율적으로 관리할 수 있으며, 데이터 조작과 자동화를 더욱 강력하게 수행할 수 있습니다! 🚀