오빠두엑셀 `2026 무료 챌린지` 오픈! 완주하고 수료증 받아가세요! 5년 연속 IT분야 베스트셀러! 「 진짜쓰는 실무엑셀 」로 2026년 공부 끝내기 엑셀이 막히셨나요? Q&A 게시판에서 바로 해결하세요.
메뉴
학습노트

엑셀 VBA 기초 완성, 원데이 챌린지 챕터2

갈매빛
6월 11일 조회 282
🔥 실습 예제과 함께 공부하는 모습을 함께 올려보세요!
(마우스 드래그 & 스크린샷+붙여넣기로 편리하게 그림을 넣을 수 있습니다)

챕터2

VBA로 작성된 대부분 코드 → Dim , Set, For, If →문법 4개만 기억하면 실무에서 필요한 대부분의 VBA 코드를 쉽게 작성

ⅰ.Dim - 변수 선언! (Declare In Memory)

•VBA 데이터 타입
①.논리값: Boolean(2byte) (True/False)
②.정수(0) : Long(4byte) (-20억~20억)
③.실수(0.0): Double(8byte) (10^300 ~ 무한대)
④.문자 : String(16byte) (20억개까지 가능)                     값
--------------------------------------------------------------------------
⑤.개체, 등등.. : object, Variant(4~22byte)(기타 등등..)  값 X

※변수를 선언하지 않으면 VBA가 기본적으로 Variant로 설정 →속도 느려짐, 오탈자 방지가 안됨

ⅱ.Set - 변수할당 Set은 왜 필요할까?

Range("A1") 범위 ①.값(Value) ②.글꼴(Font) ③.채우기색(Interior)등등...
값을 지정할 때에는 A = "사과" B= 1,000으로 할당
개체는 값이 아니기 때문에 앞에 Set을 붙여서 선언

※VBA 초보자가 가장 자주 하는 실수 Set 누락 → 91(개체변수미설정) 오류 발생[Set으로 할당하지 않았을 때 발생]→많은 연습 필요!!

보기-> 직접 실행창, 지역창, 조사식창

◎디버깅하는 방법
①.F8로 단계별로 실행하기 (노란색 화살표, 지역창으로 볼 수 있음)
②.F9로 중단점 설정하기 (빨간점)
③.멈출 지점에 Stop문 입력하기

◎실무> '파일, 시트, 범위' 3가지 중요 (F2 : 모든 라이브러리 보기, F7 : 편집기 화면실행, F5: 매크로실행, Tab : 들여쓰기)

1.Dim 통합문서 As WorkBook
①.Set 통합문서 = ThisWorkBook → 현재통합문서 ※실무빈도 높음
②.Set 통합문서 = ActiveWorkBook → 현재활성화된 통합문서
③.Set 통합문서 = Application.Workboooks.Open(경로) → 경로에 있는 특정 파일을 실행해서 통합문서로 만듬

2.Dim 시트 As WorkSheet
①.Set 시트 = ActiveSheet → 현재 활성화된 시트
②.Set 시트 = 통합문서.WorkSheets("시트이름" or 순번) ※실무빈도 높음
ex1) WorkBook.WorkSheets("견적서") → 파일에서 '견적서'라는 이름의 시트
ex2) WorkBook.WorkSheets(1) → 파일의 첫번째 시트
③.Set 시트 = Sheet1
주의사항) Worksheet → 특정 시트, Worksheets → 여러 개의 시트

3.Dim 범위 AS Range ※3가지 모두 중요
①.Set 범위 = 시트.Range("A1:A2") → 셀 주소를 직접 입력
②.Set 범위 = 시트.Cells(행번호,열번호) → 행번호, 열번호
③.Set 범위 = Selection → 선택된 범위
※WS.Activate에는 Set을 안쓰나요? Worksheet를 선택한다는 실행
※Set은 "개체 변수를 다른 값으로 할당할 때" 사용

◎실무에서 업무 자동화의 핵심 프로세스
①.조건에 따라 (IF문)
②.특정 작업을 반복(For문) * VBA DoLoop

ⅲ. For - 반복문!

자동화의 핵심! - 4가지 예제
For문 기본형식
For i = 시작 to 끝
'i를 활용한 작업..
Next

#예제1

For i = 1 To 10
MsgBox i
Next (i ← 생략가능)

#예제2

For i = 1 To 10
WS.Range("A" & i).Value = i 'A1부터 A10까지
Next

#예제3

For Each문 기본형식
For Each 개체 In 개체모음
'개체를 활용한 작업
Next

For Each WS In WB.WorkSheets
MsgBox WS.Name
Next

#예제4
For Each Rng In WS.Range("A1:A10")
Rng.Value = Rng.Address '각Rng의 값을 Rng의 주소로 입력
Next

ⅳ. IF -조건문

IF문 기본형식
If 조건 Then
'참일경우
Else
'거짓일 경우
End If

#예제1

If WS.Range("A1").Value > 0 Then
WS.Range("A2").Value = "양수"
Else
WS.Range("A2").Value = "음수"
End If

조건이 많으면 Else If로 연결

다중 IF문 기본형식
If 조건1 Then
'조건1이 참일 경우
Else If 조건2 Then
'조건2가 참일 경우
Else
'나머지일 경우
End If

#예제2

If WS.Range("A1").Value > 0 Then
WS.Range("A2').Value ="양수"
Else If WS.Range("A1").Value = 0 Then
WS.Range("A2").Value ="-"
Else
WS.Range("A2").Value = "음수"
End If

#예제3 For + If

For Each WS In WB.WorkSheets
If Len(WS.Name)>5 Then
MsgBox WS.Name
Exit For 'Exit for를 추가하면 For문이 완료되기 전에 강제로 종료
End If
Next

#예제4 For + If

For Each Rng In WS.Range("A1:A10")
If Rng.Value >80 Then
Rng.Value="Pass"
Else
Rng.Value="Fail"
End If
Next

그 외에 조건이 많을 때 Select Case문 사용

Select Case 조건
Case 조건1
...
Case Else
...
End Select

※변수를 한번에 선언하지 않고 여러개로 나누는 이유 → 변수를 상위 항목부터 단계별로 나눠서 작성하면 이후 유지보수에 더욱 편리

•Debug.Print는 [직접 실행창]에 값을 출력 →반복문의 여러 항목이나 긴텍스트를 디버깅 할 때 사용
•매크로 기록기로 하이퍼 링크 코드 확인 → 매크로 녹화 링크
'Anchor = 링크를 추가할 셀
'Address = 웹페이지 주소 or 파일경로
'SubAddress =[선택인수] 내부 시트로 이동할 때 주소
'시트이름!A!
•특정시트의 셀로 이동할 때의 셀주소 → '시트명'!셀주소 ex) 'Sheet1'!A!, '1월매출'!B2
※ & 기호는 반드시 [띄어쓰기]로 연결 붙일 경우 컴파일 오류 발생

WS.Hyperlinks.Add WS.Range("C" & i), "",WB.Worksheets(i).Name & "!A1"

• 시트의 A1 셀부터 A10 셀까지 순차적으로 1에서 10까지의 값을 입력하는 매크로완성.
• 통합문서의 모든 시트를 돌아가며 시트 이름 뒤에 "-완료"를 추가하는 매크로완성.

댓글 0

학습기록 게시판의 최근 글

스크랩 완료