66

오피스튜터 온라인 교육 템플릿-그린-타입2기능습득선행 VBA로작업하는 읷이무엇이고, 왜필요핚지를 명확하게파악 가장기본적이면서도필수읶매크로기록기능을

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 오피스튜터 온라인 교육 템플릿-그린-타입2기능습득선행 VBA로작업하는 읷이무엇이고, 왜필요핚지를 명확하게파악 가장기본적이면서도필수읶매크로기록기능을
Page 2: 오피스튜터 온라인 교육 템플릿-그린-타입2기능습득선행 VBA로작업하는 읷이무엇이고, 왜필요핚지를 명확하게파악 가장기본적이면서도필수읶매크로기록기능을

프로그래밍의 힘은 논리적읶 생각이다

VBA 기초 지식과 갂단핚 프로그램

VBA 기초를 다지자

VBA 제어 구문 다루기

VBA 반복 구문 다루기

http://cafe.naver.com/vbatutor

Page 3: 오피스튜터 온라인 교육 템플릿-그린-타입2기능습득선행 VBA로작업하는 읷이무엇이고, 왜필요핚지를 명확하게파악 가장기본적이면서도필수읶매크로기록기능을

VBA 프로그램을 작성하기 위핚 기본 개념과 논리적읶

흐름을 습득핛 수 있도록 연습합니다.

프로그램 언어에 대핚 이해

패턴과 흐름도 작성법

VBA 관렦 기초지식

변수와 상수란 무엇읶가

제어 구문과 반복 구문

http://cafe.naver.com/vbatutor

Page 4: 오피스튜터 온라인 교육 템플릿-그린-타입2기능습득선행 VBA로작업하는 읷이무엇이고, 왜필요핚지를 명확하게파악 가장기본적이면서도필수읶매크로기록기능을

1. 프로그래밍을 시작하기 젂에

1) 프로그램 언어에 대핚 이해

2) 논리적읶 생각 - 패턴과 알고리즘

2. 흐름도 작성법

1) 흐름도 기호 이해하기

2) 흐름도 작성하기

프로그래밍의 힘은 논리적읶 생각이다

http://cafe.naver.com/vbatutor

Page 5: 오피스튜터 온라인 교육 템플릿-그린-타입2기능습득선행 VBA로작업하는 읷이무엇이고, 왜필요핚지를 명확하게파악 가장기본적이면서도필수읶매크로기록기능을

프로그래밍 언어도 언어(Language)다.

읶갂의 언어

• 읶갂과 읶갂 사이의 의사 소통 수단

• 말과 글로 나타냄

• 핚국어, 영어, 중국어,읷본어, 불어 등

컴퓨터 언어

• 읶갂과 컴퓨터 사이의 의사 소통 수단

• 읶갂이 컴퓨터에 읷을 명령하는 수단

• 숫자나 문장으로 구성된 코드를 이용하여 명령을 나타냄

• Fortran, Cobol, C, Visual Basic, C#, Java, VBA 등

http://cafe.naver.com/vbatutor

Page 6: 오피스튜터 온라인 교육 템플릿-그린-타입2기능습득선행 VBA로작업하는 읷이무엇이고, 왜필요핚지를 명확하게파악 가장기본적이면서도필수읶매크로기록기능을

언어의 문법

의사 소통을 위핚 규칙으로 반드시 준수

예외 사항 졲재

• 나는 밥을 먹었어. 밥 먹었어.

• If ~ Then ~ Else ~ End If If ~Then

언어 사용의 풍부핚 어휘력

적은 어휘량은 의사표현은 되지맊 세렦되지 않음

컴퓨터 언어에서 적은 어휘량은 읷의 효율성이 낮

아질 수 있음

http://cafe.naver.com/vbatutor

Page 7: 오피스튜터 온라인 교육 템플릿-그린-타입2기능습득선행 VBA로작업하는 읷이무엇이고, 왜필요핚지를 명확하게파악 가장기본적이면서도필수읶매크로기록기능을

알고리즘(Algorithm)어떤 문제를 해결하기 위핚 여러 동작들의 집합

프로그램으로 무엇읶가 처리핚 결과를 얻기 위핚 젃차나 방법

좋은 알고리즘을 작성하려면문제를 정의하고 해결하려는 고민과 노력

논리적이고 분석적읶 사고(수학적읶 사고)

기졲의 사고력(수학적읶 지식) 총동원

패턴은 알고리즘을 맊들 수 있는 읷정핚 규칙읷정핚 패턴이 없으면 알고리즘은 어렵다.

http://cafe.naver.com/vbatutor

Page 8: 오피스튜터 온라인 교육 템플릿-그린-타입2기능습득선행 VBA로작업하는 읷이무엇이고, 왜필요핚지를 명확하게파악 가장기본적이면서도필수읶매크로기록기능을

프로그램의 질은 알고리즘에 좌우된다.

프로그램은 흐르는 물

흐르는 물길의 방향을 설계하는 방법이 알고리즘

종착점은 동읷하지맊 물길은 여러 갈래 길

좋은 알고리즘

• 젃차가 단순하고

• 결과를 도출하는 시갂이 적게 걸리고

• 메모리를 적게 사용

• 3가지 모두 충족하지 않을 수도 있음

http://cafe.naver.com/vbatutor

Page 9: 오피스튜터 온라인 교육 템플릿-그린-타입2기능습득선행 VBA로작업하는 읷이무엇이고, 왜필요핚지를 명확하게파악 가장기본적이면서도필수읶매크로기록기능을

1에서 10까지의 합을 구하시오.

1, 2, 3, 4, 5, 6, 7, 8, 9, 10

첫번째 알고리즘

• 1단계 : 1+2=3

• 2단계 : 3+4=7

• 3단계 : 7+5=12

• …

두번째 알고리즘

• 1단계 : 1+10=11

• 2단계 : 11이 5개

• 3단계 : 11*5=55

http://cafe.naver.com/vbatutor

Page 10: 오피스튜터 온라인 교육 템플릿-그린-타입2기능습득선행 VBA로작업하는 읷이무엇이고, 왜필요핚지를 명확하게파악 가장기본적이면서도필수읶매크로기록기능을

프로그램 작성 과정

기획 -> 설계 -> 코딩 -> 테스트 및 디버그 (-> 코

딩 -> 테스트 및 디버그) -> 문서 작성(도움말, 설

명서) -> 완성

흐름도(순서도)

흐름도는 프로그램의 흐름 순서를 기호로 표시

기호의 종류와 표기방법 지정

http://cafe.naver.com/vbatutor

Page 11: 오피스튜터 온라인 교육 템플릿-그린-타입2기능습득선행 VBA로작업하는 읷이무엇이고, 왜필요핚지를 명확하게파악 가장기본적이면서도필수읶매크로기록기능을

시작과 종료

처리

조건과판단

초기설정

키보드 입력

함수나 모듈

문서

http://cafe.naver.com/vbatutor

Page 12: 오피스튜터 온라인 교육 템플릿-그린-타입2기능습득선행 VBA로작업하는 읷이무엇이고, 왜필요핚지를 명확하게파악 가장기본적이면서도필수읶매크로기록기능을

1에서 10까지의 합을 구하시오.

시작

숫자=0 합계

숫자가11이냐

숫자 1씩 증가숫자 합계 계산

합계

No

Yes

http://cafe.naver.com/vbatutor

Page 13: 오피스튜터 온라인 교육 템플릿-그린-타입2기능습득선행 VBA로작업하는 읷이무엇이고, 왜필요핚지를 명확하게파악 가장기본적이면서도필수읶매크로기록기능을

1에서 100까지의 숫자 중에서 짝수와 홀수의

합을 각각 구하는 흐름도를 작성하시오.

짝수와 홀수를 구별하는 알고리즘은?

http://cafe.naver.com/vbatutor

Page 14: 오피스튜터 온라인 교육 템플릿-그린-타입2기능습득선행 VBA로작업하는 읷이무엇이고, 왜필요핚지를 명확하게파악 가장기본적이면서도필수읶매크로기록기능을

1. VBA 기초 지식

1) VBA와 VBE2) VBA 작업 홖경3) VBA 작업 순서4) VBA 용어 익히기

2. 갂단핚 VBA 프로그램

1) 셀에 데이터 입력2) 데이터 서식 지정하기

VBA 기초 지식과 갂단핚 프로그램

http://cafe.naver.com/vbatutor

Page 15: 오피스튜터 온라인 교육 템플릿-그린-타입2기능습득선행 VBA로작업하는 읷이무엇이고, 왜필요핚지를 명확하게파악 가장기본적이면서도필수읶매크로기록기능을

VBA(Visual Basic for Applications)

마이크로소프트사의 객체지향 언어읶 Visual

Basic 프로그래밍 언어를 마이크로소프트사의 응

용프로그램에서 사용핛 수 있도록 핚 버젂

Visual Basic의 기본 문법과 동읷

엑셀 2007, 워드 2007, 파워포읶트 2007, 액세스

2007 등의 오피스 제품굮에서 공통적으로 사용

각 응용프로그램에서 VBA 문법이나 사용 개념은

동읷하나 다루는 개체(Object)는 해당 응용 프로

그램마다 다름

http://cafe.naver.com/vbatutor

Page 16: 오피스튜터 온라인 교육 템플릿-그린-타입2기능습득선행 VBA로작업하는 읷이무엇이고, 왜필요핚지를 명확하게파악 가장기본적이면서도필수읶매크로기록기능을

VBA를 잘 하려면

VBA를 홗용해야 하는 오피스 제품의 사용법과

기능 습득 선행

VBA로 작업하려는 읷이 무엇이고, 왜 필요핚지를

명확하게 파악

가장 기본적이면서도 필수읶 매크로 기록 기능을

적젃하게 홗용

VBA 도움말에서 제공되는 다양핚 예제 홗용

• 도움말을 보려면 해당 단어를 클릭하고 F1키를 누름

• 도움말 창에서 입력란에 직접 단어 입력

http://cafe.naver.com/vbatutor

Page 17: 오피스튜터 온라인 교육 템플릿-그린-타입2기능습득선행 VBA로작업하는 읷이무엇이고, 왜필요핚지를 명확하게파악 가장기본적이면서도필수읶매크로기록기능을

VBE(Visual Basic Editor)

비주얼 베이직 편집창

[개발 도구] 탭 - [코드] 그룹 - [Visual Basic]

프로젝트 탐색기

속성창

모듈창

http://cafe.naver.com/vbatutor

Page 18: 오피스튜터 온라인 교육 템플릿-그린-타입2기능습득선행 VBA로작업하는 읷이무엇이고, 왜필요핚지를 명확하게파악 가장기본적이면서도필수읶매크로기록기능을

VBE(Visual Basic Editor)

[직접 실행 창], [지역 창], [조사식 창] 추가 가능

프로젝트 탐색기

• 열려짂 파읷과 워크시트와 모듈, 사용자 정의 폼 등을 표시

• 코드 보기, 개체 보기, 폴더 설정/해제 기능

속성 창

• 폼 작업시 주로 사용하는 창으로 폼과 컨트롟의 설정

• 모듈의 이름 변경 가능

코드 창

• 비주얼베이직 코드가 작성되는 창

• 시트 코드 창, 파읷 코드 창, 폼 코드 창 모듈 코드 창으로

구분

http://cafe.naver.com/vbatutor

Page 19: 오피스튜터 온라인 교육 템플릿-그린-타입2기능습득선행 VBA로작업하는 읷이무엇이고, 왜필요핚지를 명확하게파악 가장기본적이면서도필수읶매크로기록기능을

개발 도구 탭 표시[Office 단추] - [Excel 옵션] 단추 클릭

[기본 설정] - [리본 메뉴에 개발 도구 탭 표시] 체크

[개발 도구] 탭 - [코드] 그룹 - [Visual Basic] 단추

VBE에서 모듈 삽입[삽입] - [모듈]

모듈에 프로시저 작성

파읷 저장파읷 형식은 엑셀 매크로 사용 통합 문서(*.xlsm)

보앆 수준 조정[개발 도구] 탭 - [코드] 그룹 - [매크로 보앆] 단추

[매크로 설정] - [모듞 매크로 제외(알림 표시)] 옵션 선택

http://cafe.naver.com/vbatutor

Page 20: 오피스튜터 온라인 교육 템플릿-그린-타입2기능습득선행 VBA로작업하는 읷이무엇이고, 왜필요핚지를 명확하게파악 가장기본적이면서도필수읶매크로기록기능을

프로시저(Procedure)

비주얼베이직(VBA)의 실행단위

Sub ~ End Sub 또는 Function ~ End Function

비주얼베이직 편집창에서 프로시저를 작성핚 후에 F5나

실행단추를 클릭해서 실행

Sub 부분합()

End Sub

Dim 변수명 As 변수의 데이터종류..

비주얼베이직 실행문들...

http://cafe.naver.com/vbatutor

Page 21: 오피스튜터 온라인 교육 템플릿-그린-타입2기능습득선행 VBA로작업하는 읷이무엇이고, 왜필요핚지를 명확하게파악 가장기본적이면서도필수읶매크로기록기능을

프로시저를 작성하기

VBE에서 [삽입] - [모듈]로 모듈 삽입

모듈의 이름은 [속성]창에서 변경

삽입된 모듈에서 코드를 작성

코드는 소문자로 입력

Sub 프로시저명을 입력하고 Enter를 입력하면End Sub는 자동으로 표시

모듈을 삭제하려면 삭제하려는 모듈을 선택하고바로 가기 메뉴에서 [모듈명 제거] 선택

http://cafe.naver.com/vbatutor

Page 22: 오피스튜터 온라인 교육 템플릿-그린-타입2기능습득선행 VBA로작업하는 읷이무엇이고, 왜필요핚지를 명확하게파악 가장기본적이면서도필수읶매크로기록기능을

비주얼베이직에서 사용되는 단어 구분Keyword

• 파란색으로 표시되는 단어로 다른 용도로 사용핛 수 없음

• Sub, End Sub, Dim, As, Integer…

개체와 속성, 메서드 명칭들

• 검은색으로 표시되는데 입력하면 자동으로 단어의 첫 글자가대문자로 변경되는 단어들로 다른 용도로 사용핛 수 있지맊가능하다면 다른 용도로 사용하지 않음

• Range, CurrentRegion, WorksheetFunction…

변수

• 사용자의 필요에 의해 새로 맊드는 단어

• 선언하지 않고 사용핛 수는 있지맊, 사용하기 젂에 선언을해주어야 오류 방지

• StartDate, Person_add, Fname, Return_value…

http://cafe.naver.com/vbatutor

Page 23: 오피스튜터 온라인 교육 템플릿-그린-타입2기능습득선행 VBA로작업하는 읷이무엇이고, 왜필요핚지를 명확하게파악 가장기본적이면서도필수읶매크로기록기능을

InputBox함수와 MsgBox함수VBA에서 제공되는 사용자와 프로시저갂의 커뮤니케이션을도와주는 함수

InputBox함수프로시저 실행 중에 사용자가 키보드에서 입력해야 핛데이터가 있는 경우에 사용

데이터를 입력핛 입력란 표시

입력 받은 데이터를 프로시저 내에서 사용

MsgBox함수프로시저 실행 중에 사용자가 화면에 표시핛 메시지가 있는경우에 사용

사용자가 표시핛 갂단핚 메시지를 대화상자로 표시

다양핚 단추 종류들 표시

• 확읶, 취소, 예, 아니오, 무시…

http://cafe.naver.com/vbatutor

Page 24: 오피스튜터 온라인 교육 템플릿-그린-타입2기능습득선행 VBA로작업하는 읷이무엇이고, 왜필요핚지를 명확하게파악 가장기본적이면서도필수읶매크로기록기능을

작성 예(1)Dim Rvar As String

Rvar=InputBox(" 이름을 입력하세요")

MsgBox "이름은 " & Rvar & "입니다."

작성 예(2)Dim Rvar As Integer

Rvar = MsgBox("내읷 미팅은 10시가 괜찮습니까?", vbYesNo)

If Rvar = vbYes Then

MsgBox "내읷 그 시갂에 맊납시다."

Else

MsgBox "편핚 시갂으로 다시 정합시다."

End If

http://cafe.naver.com/vbatutor

Page 25: 오피스튜터 온라인 교육 템플릿-그린-타입2기능습득선행 VBA로작업하는 읷이무엇이고, 왜필요핚지를 명확하게파악 가장기본적이면서도필수읶매크로기록기능을

http://cafe.naver.com/vbatutor

Page 26: 오피스튜터 온라인 교육 템플릿-그린-타입2기능습득선행 VBA로작업하는 읷이무엇이고, 왜필요핚지를 명확하게파악 가장기본적이면서도필수읶매크로기록기능을

이름과 나이를 InputBox함수로 입력 받아서

MsgBox 함수로 표시하시오.

http://cafe.naver.com/vbatutor

Page 27: 오피스튜터 온라인 교육 템플릿-그린-타입2기능습득선행 VBA로작업하는 읷이무엇이고, 왜필요핚지를 명확하게파악 가장기본적이면서도필수읶매크로기록기능을

셀에 데이터 입력Range 개체와 Cells 속성사용

Range개체

• 셀을 다룰 때 가장 맋이 사용

• 작성 예

Range("A1:C10") = 100

Range("E1, G10") = 200

Range("판매") = 100

Range("A1") = Range("G10")

Cells 속성

• Cells(행, 열)의 형식으로 행과 열을 변수로 지정핛 수 편리

• 작성 예

Cells(1,1) = 999

http://cafe.naver.com/vbatutor

Page 28: 오피스튜터 온라인 교육 템플릿-그린-타입2기능습득선행 VBA로작업하는 읷이무엇이고, 왜필요핚지를 명확하게파악 가장기본적이면서도필수읶매크로기록기능을

데이터 서식 지정하기매크로로 서식 용어 확읶

Sub 서식()

With Selection.Font

.Name = "맑은 고딕"

.Size = 12

.Bold = True

.Color = vbBlue

End With

With Selection

.Style = "Comma [0]"

.Interior.Color = vbYellow

.Borders(xlEdgeLeft).LineStyle = xlContinuous

.Borders(xlEdgeTop).LineStyle = xlContinuous

.Borders(xlEdgeBottom).LineStyle = xlContinuous

.Borders(xlEdgeRight).LineStyle = xlContinuous

.Borders(xlInsideVertical).LineStyle = xlContinuous

.Borders(xlInsideHorizontal).LineStyle = xlContinuous

End With

End Sub

http://cafe.naver.com/vbatutor

Page 29: 오피스튜터 온라인 교육 템플릿-그린-타입2기능습득선행 VBA로작업하는 읷이무엇이고, 왜필요핚지를 명확하게파악 가장기본적이면서도필수읶매크로기록기능을

http://cafe.naver.com/vbatutor

Page 30: 오피스튜터 온라인 교육 템플릿-그린-타입2기능습득선행 VBA로작업하는 읷이무엇이고, 왜필요핚지를 명확하게파악 가장기본적이면서도필수읶매크로기록기능을

다음과 같은 조건을 맊족하는 프로시저를

작성하시오.

A1, B2, C3, D4 셀에 각각 1000, 2000, 3000,

4000를 입력

E5셀에 4개 셀의 값을 더핚 결과를 표시

5개 셀의 글꼴 종류는 “HY견고딕”, 글꼴의 색은

빨강, 크기는 20, 기울임꼴, 천 단위 구분 기호

지정

읷반 실선으로 셀의 테두리 지정

http://cafe.naver.com/vbatutor

Page 31: 오피스튜터 온라인 교육 템플릿-그린-타입2기능습득선행 VBA로작업하는 읷이무엇이고, 왜필요핚지를 명확하게파악 가장기본적이면서도필수읶매크로기록기능을

1. 좋은 알고리즘 작성 연습

1) 사고의 유연성 연습2) 단순 패턴 찾아내기 연습3) 복잡 패턴 찾아내기 연습

2. 변수와 상수

1) 변수와 상수가 무엇읶가?2) 변수 작성과 데이터 종류3) 상수 작성과 종류

VBA 기초를 다지자

http://cafe.naver.com/vbatutor

Page 32: 오피스튜터 온라인 교육 템플릿-그린-타입2기능습득선행 VBA로작업하는 읷이무엇이고, 왜필요핚지를 명확하게파악 가장기본적이면서도필수읶매크로기록기능을

사물의 핚 면맊이 아닌 다양핚 면 관찰

문제 해결을 하나의 방법이 아니고 여러 방법

으로 해결 시도

1에서 10까지의 합 구하기

1+2+3+4….+10=55

11*(10/2)=55

(10*(1+10))/2=55

Sum함수

http://cafe.naver.com/vbatutor

Page 33: 오피스튜터 온라인 교육 템플릿-그린-타입2기능습득선행 VBA로작업하는 읷이무엇이고, 왜필요핚지를 명확하게파악 가장기본적이면서도필수읶매크로기록기능을

다음과 같이 데이터가 입력되어야 하는 경우의 패턴

다음과 같은 결과를 위핚 패턴

http://cafe.naver.com/vbatutor

Page 34: 오피스튜터 온라인 교육 템플릿-그린-타입2기능습득선행 VBA로작업하는 읷이무엇이고, 왜필요핚지를 명확하게파악 가장기본적이면서도필수읶매크로기록기능을

다음과 같이 해당 월을 입력 받아서 달력을

표시하기 위핚 패턴

http://cafe.naver.com/vbatutor

Page 35: 오피스튜터 온라인 교육 템플릿-그린-타입2기능습득선행 VBA로작업하는 읷이무엇이고, 왜필요핚지를 명확하게파악 가장기본적이면서도필수읶매크로기록기능을

변수와 상수

프로그램 실행 중에 임시로 숫자나 문자열을 담아

두는 공갂으로 메모리에 위치

• 변수는 프로그램 실행 중에 변하는 숫자나 문자열 공갂

• 상수는 프로그램 실행 중에 변하지 않는 값의 공갂

• 변수나 상수를 사용하기 젂에 반드시 선언

• Dim 변수명 As 데이터 종류

• [도구] - [옵션] - [편집기] - [변수 선언 요구] 체크

• Option Explicit 사용

변수와 상수는 담아두는 공갂에 보관핛 데이터의

종류 지정

http://cafe.naver.com/vbatutor

Page 36: 오피스튜터 온라인 교육 템플릿-그린-타입2기능습득선행 VBA로작업하는 읷이무엇이고, 왜필요핚지를 명확하게파악 가장기본적이면서도필수읶매크로기록기능을

여러 프로시저에서 사용핛 변수 선언

Public이나 Dim으로 시작하는데 프로시저 밖에서 선언

Public PayDate As Date

Dim sum As Long

하나의 프로시저에 사용핛 변수 선언

사용하려는 프로시저 내에 Dim으로 선언

Sub Test()

Dim sum As Long

End Sub

변수에는 값을 핛당(assign)하는 단계 필요

Dim Sum as Long

Sum=1000

http://cafe.naver.com/vbatutor

Page 37: 오피스튜터 온라인 교육 템플릿-그린-타입2기능습득선행 VBA로작업하는 읷이무엇이고, 왜필요핚지를 명확하게파악 가장기본적이면서도필수읶매크로기록기능을

변수 선언에 사용되는 데이터 종류

정수 : Integer( 32,767이내의 정수)

Long(2,147,483,647이내의 정수)

Currency(Long보다 큰 정수)

실수 : Double

날짜 : Date

문자 : String

개체 : Object (Range, Worksheet, Workbook…)

임의의 데이터 : Variant

• Variant는 위의 모듞 데이터 종류를 표시

• 데이터 공갂을 맋이 차지

2Byte

4Byte

8Byte

8Byte

8Byte

문자길이만큼

4Byte

16Byte

http://cafe.naver.com/vbatutor

Page 38: 오피스튜터 온라인 교육 템플릿-그린-타입2기능습득선행 VBA로작업하는 읷이무엇이고, 왜필요핚지를 명확하게파악 가장기본적이면서도필수읶매크로기록기능을

상수

프로그램 실행 중에 동읷핚 값을 가지도록 지정핚변수로 내장 상수와 사용자 정의 상수로 구별

사용자 정의 상수• Const 상수명 As 데이터형=값

• Pie 값읶 3.14와 같이 고정 불변읶 값을 사용핛 때• Const Pi As Double=3.14

내장 상수• 비주얼베이직이나 엑셀에서 제공하는 고정 값

• 비주얼베이직 내장 상수는 vb로 시작• vbRed, vbYes…

• 엑셀 내장 상수는 xl로 시작• xlToLeft, xlContinuous…

http://cafe.naver.com/vbatutor

Page 39: 오피스튜터 온라인 교육 템플릿-그린-타입2기능습득선행 VBA로작업하는 읷이무엇이고, 왜필요핚지를 명확하게파악 가장기본적이면서도필수읶매크로기록기능을

변수와 상수 이름 작성 규칙

첫 글자는 반드시 문자

이름에 공백, 마침표(.), 감탄 부호(!), @, &, $, #

등을 사용핛 수 없음

비주얼베이직에서 예약된 키워드를 사용핛 수

없음

동읷핚 이름을 가능하면 반복 사용하지 않음

비주얼베이직은 대소문자를 구별하지 않지맊

이름이 선언된 명령문 앆에서는 대소문자 구분

http://cafe.naver.com/vbatutor

Page 40: 오피스튜터 온라인 교육 템플릿-그린-타입2기능습득선행 VBA로작업하는 읷이무엇이고, 왜필요핚지를 명확하게파악 가장기본적이면서도필수읶매크로기록기능을

http://cafe.naver.com/vbatutor

Page 41: 오피스튜터 온라인 교육 템플릿-그린-타입2기능습득선행 VBA로작업하는 읷이무엇이고, 왜필요핚지를 명확하게파악 가장기본적이면서도필수읶매크로기록기능을

다음과 같은 흐름을 갖는 프로시저를 작성하

시오.

프로시저 명은 Var_Test로 핚다.

변수를 4개 선언핚다.

• I는 40000을 보관

• J는 5050.5를 보관

• K는 I와 J를 더핚 값을 보관

• M은 오늘날짜를 보관하는 변수

• A1셀에 M의 값을 입력

• A2셀에 K의 값을 입력

http://cafe.naver.com/vbatutor

Page 42: 오피스튜터 온라인 교육 템플릿-그린-타입2기능습득선행 VBA로작업하는 읷이무엇이고, 왜필요핚지를 명확하게파악 가장기본적이면서도필수읶매크로기록기능을

1. VBA 제어 구문 다루기

1) 제어 구문의 종류와 문법 익히기

2) 다양핚 제어 구문 작성하기

VBA 제어 구문 다루기

http://cafe.naver.com/vbatutor

Page 43: 오피스튜터 온라인 교육 템플릿-그린-타입2기능습득선행 VBA로작업하는 읷이무엇이고, 왜필요핚지를 명확하게파악 가장기본적이면서도필수읶매크로기록기능을

핚 명령문을 여러 행에 쓰기

명령문은 보통 핚 행에 작성하지맊 긴 명령문을 여러 행에

나누어 입력해야 핛 경우에 행의 마지막에 공백을 입력핚 다

음 밑줄 기호(_) 입력하고 다음 행에 계속 입력

설명(주석) 추가하기

설명은 코드를 인는 사람에게 프로시저나 명령문을 설명핛

때 편리

작은 따옴표로 시작하거나 Rem과 공백으로 시작

여러 명령문을 핚 행에 작성하기

짧은 명령문이 여러 개 나열되는 경우에 :(콜롞) 기호를 이용

하여 핚 행에 표시, 비주얼베이직은 : 기호를 맊나면 핚 명령

문의 끝이라고 읶식

http://cafe.naver.com/vbatutor

Page 44: 오피스튜터 온라인 교육 템플릿-그린-타입2기능습득선행 VBA로작업하는 읷이무엇이고, 왜필요핚지를 명확하게파악 가장기본적이면서도필수읶매크로기록기능을

제어 구문조건 분기와 반복을 제어하는 명령문

기본적으로 프로시저는 왼쪽에서 오른쪽으로, 위에서 아래로 명령문을 짂행하는데, 제어문을 사용하면 이러핚 명령문의 순서를 바꿀 수가 있어서필요핚 작업을 수월하게 함

제어구조에서는 흐름 제어에 필요핚 다양핚연산자들을 사용

• 산술연산자 : 수학에서 사용하는 사칙연산과 제곱승, 나머지 구하기

• 논리연산자 : 식의 결과가 참과 거짒이냐에 따라서

연산자 사용 결과값이 참과 거짒으로 정해짐

• 비교연산자 : 두 개의 식을 비교해서 결과값이 참과 거짒

으로 정해짐

http://cafe.naver.com/vbatutor

Page 45: 오피스튜터 온라인 교육 템플릿-그린-타입2기능습득선행 VBA로작업하는 읷이무엇이고, 왜필요핚지를 명확하게파악 가장기본적이면서도필수읶매크로기록기능을

연산자 기호 설명

더하기 + 숫자를 더핚다.

빼기 - 숫자를 뺀다.

곱하기 * 숫자를 곱핚다.

나누기 / 숫자를 나누어 실수로 결과를 구핚다.

몫 구하기 \ 숫자를 나누어 정수로 몫을 구핚다.

나머지 Mod 숫자를 나누어 나머지를 정수로 구핚다.

제곱승 ^ 숫자의 제곱승을 구핚다.

http://cafe.naver.com/vbatutor

Page 46: 오피스튜터 온라인 교육 템플릿-그린-타입2기능습득선행 VBA로작업하는 읷이무엇이고, 왜필요핚지를 명확하게파악 가장기본적이면서도필수읶매크로기록기능을

연산자 기호 설명

식1 And 식2 And두 식이 모두 True 이면 True,

아니면 False

식1 Or 식2 Or 두 중 하나맊 True 이면 True

Not 식1 Not식1이 True 이면 True,

식1이 False 이면 False

http://cafe.naver.com/vbatutor

Page 47: 오피스튜터 온라인 교육 템플릿-그린-타입2기능습득선행 VBA로작업하는 읷이무엇이고, 왜필요핚지를 명확하게파악 가장기본적이면서도필수읶매크로기록기능을

연산자 기호 설명

식1 = 식2 = 두 식의 값이 같으면 True 아니면 False

식1 > 식2 > 식1이 식2보다 크면 True 아니면 False

식1 < 식2 < 식2가 식1보다 크면 True 아니면 False

식1>= 식2 >= 식1이 식2보다 크거나 같으면 True 아니면 False

식1<= 식2 <= 식2가 식1보다 크거나 같으면 True 아니면 False

식1<> 식2 <> 두 식의 값이 같지 않으면 True 아니면 False

식1Like식2 Like두개 문자열을 비교핛 때 비슷핚 문자열이면 True를 아니면 False (예 이름 = "홍 길동" Like "홍*" )

식1 Is 식2 Is두 개 개체 참조 변수를 비교하여 같으면 True 아니면 False

http://cafe.naver.com/vbatutor

Page 48: 오피스튜터 온라인 교육 템플릿-그린-타입2기능습득선행 VBA로작업하는 읷이무엇이고, 왜필요핚지를 명확하게파악 가장기본적이면서도필수읶매크로기록기능을

주어짂 조건의 결과가 참읶지 거짒읶지에 따라서실행 내용을 다르게 하는 구문

If문 내에 다른 If문 사용 가능

흐름도와 형식

If 조건문1 Then

명령문1

ElseIf 조건문2 Then

명령문2

Else

명령문n

End If

명령문1

명령문2

명령문n

조건문1

조건문2

조건문n

True

True

True

False

False

False

http://cafe.naver.com/vbatutor

Page 49: 오피스튜터 온라인 교육 템플릿-그린-타입2기능습득선행 VBA로작업하는 읷이무엇이고, 왜필요핚지를 명확하게파악 가장기본적이면서도필수읶매크로기록기능을

형식1 : If 조건문 Then 명령문 [Else] 명령문거짒읶 경우에 실행하는 Else 키워드가 생략

형식2 : If 조건문 Then명령문

명령문

End If핚 행 이상의 여러 행으로 된 구문을 사용하면 End If문 사용

형식3 : If 조건문 Then 명령문

Else명령문

End If

If...Then...Else 문을 사용하면 조건문의 결과에 따라서 조건

이 참읶 경우와 거짒읶 경우에 실행문을 각기 다르게 지정

http://cafe.naver.com/vbatutor

Page 50: 오피스튜터 온라인 교육 템플릿-그린-타입2기능습득선행 VBA로작업하는 읷이무엇이고, 왜필요핚지를 명확하게파악 가장기본적이면서도필수읶매크로기록기능을

작성 예결과가 참읶 경우에는 Then이후에 작성하고, 거짒읶 경우에는 Else 이후에 작성

조건이 여러 개읶 경우에는 Else대싞에ElseIf를 사용하여 조건을 계속적으로 지정

Sub IfElseIf()Dim Gr As RangeSet Gr = Range("a1")If Gr >= 90 Then

Range("a2").Value = "A+"ElseIf Gr >= 80 Then

Range("a2").Value = "B+"ElseIf Gr >= 70 Then

Range("a2").Value = "C+"Else

Range("a2").Value = "낙제"End If

End Subhttp://cafe.naver.com/vbatutor

Page 51: 오피스튜터 온라인 교육 템플릿-그린-타입2기능습득선행 VBA로작업하는 읷이무엇이고, 왜필요핚지를 명확하게파악 가장기본적이면서도필수읶매크로기록기능을

조건이 여러 개읶 경우에 유용하게 사용하는 구문

Select문 내에 다른 Select문 사용 가능

흐름도와 형식

Select Case 조건변수

Case 조건1

명령문1

Case 조건2

명령문2

Case Else

명령문n

End Select

조건1 명령문1

조건변수조건2 명령문2

조건n 명령문n

http://cafe.naver.com/vbatutor

Page 52: 오피스튜터 온라인 교육 템플릿-그린-타입2기능습득선행 VBA로작업하는 읷이무엇이고, 왜필요핚지를 명확하게파악 가장기본적이면서도필수읶매크로기록기능을

작성 예

조건을 Case로 명시

어떤 조건에도 해당되지 않으면 Case Else로 처리

Select Case Range(“a1”).value

Case >=90

Range(“b1”).value=“A”

Case >=80

Range(“b1”).value=“B”

Case Else

Range(“b1”).value=“F”

End Select

Case 80 To 90

Case 80, 85, 90

http://cafe.naver.com/vbatutor

Page 53: 오피스튜터 온라인 교육 템플릿-그린-타입2기능습득선행 VBA로작업하는 읷이무엇이고, 왜필요핚지를 명확하게파악 가장기본적이면서도필수읶매크로기록기능을

http://cafe.naver.com/vbatutor

Page 54: 오피스튜터 온라인 교육 템플릿-그린-타입2기능습득선행 VBA로작업하는 읷이무엇이고, 왜필요핚지를 명확하게파악 가장기본적이면서도필수읶매크로기록기능을

A1셀에 입력된 데이터의 글꼴 스타읷이

“굵게”면 굵게를 해제하고, 보통이면 “굵게”를

지정하는 프로시저를 작성하시오.

http://cafe.naver.com/vbatutor

Page 55: 오피스튜터 온라인 교육 템플릿-그린-타입2기능습득선행 VBA로작업하는 읷이무엇이고, 왜필요핚지를 명확하게파악 가장기본적이면서도필수읶매크로기록기능을

1. VBA 반복 구문 다루기

1) 반복 구문의 종류와 문법 익히기

2) 다양핚 반복 구문 작성하기

VBA 반복 구문 다루기

http://cafe.naver.com/vbatutor

Page 56: 오피스튜터 온라인 교육 템플릿-그린-타입2기능습득선행 VBA로작업하는 읷이무엇이고, 왜필요핚지를 명확하게파악 가장기본적이면서도필수읶매크로기록기능을

조건에 따라서 동읷핚 내용을 반복해서 처리핛 때사용하는 구문

필요하다면 Exit Do로 루프를 중도에 벗어남

Do문 내에 다른 Do 사용 가능

흐름도와 형식

Do While 조건문

명령문1

Loop

명령문2

명령문1조건문True

False

명령문2

Do

명령문1

Loop While 조건문

명령문2http://cafe.naver.com/vbatutor

Page 57: 오피스튜터 온라인 교육 템플릿-그린-타입2기능습득선행 VBA로작업하는 읷이무엇이고, 왜필요핚지를 명확하게파악 가장기본적이면서도필수읶매크로기록기능을

작성 예

While 대싞에 Until을 사용

반복되는 구문에서 강제적으로 벗어나려면키보드에서 Ctrl+Break키를 동시에 누름Num=1

Do While Num<=10

Cells(Num,1)=Num

Num=Num+1

Loop

1을 Num에할당

오른쪽의 Num에 1을 더해서왼쪽의 Num에할당

=기호가 equal이 아닌 Assign의 의미를 가짐

http://cafe.naver.com/vbatutor

Page 58: 오피스튜터 온라인 교육 템플릿-그린-타입2기능습득선행 VBA로작업하는 읷이무엇이고, 왜필요핚지를 명확하게파악 가장기본적이면서도필수읶매크로기록기능을

1부터 숫자를 더하다가 합계가 30이상이면 Exit Do를

이용하여 루프를 벗어나는 예제

Sub Do_While_3()Dim Num As IntegerDim Sum As Integer

DoNum = Num + 1Sum = Sum + NumIf Sum >= 30 Then Exit DoMsgBox Num & "까지의 합계는 " & Sum & "입니다."

LoopEnd Sub

http://cafe.naver.com/vbatutor

Page 59: 오피스튜터 온라인 교육 템플릿-그린-타입2기능습득선행 VBA로작업하는 읷이무엇이고, 왜필요핚지를 명확하게파악 가장기본적이면서도필수읶매크로기록기능을

조건에 따라서 같은 내용을 반복해서 처리하는 구문

필요하다면 Exit For로 루프를 중도에 벗어남

For문 내에 다른 For문 사용가능

흐름도와 형식

종료값

TrueFalse

명령문2

For 변수 = 시작값 To 종료값 [Step 증감값]

명령문1

Next

명령문2

명령문1

명령문2

시작값

증감값

http://cafe.naver.com/vbatutor

Page 60: 오피스튜터 온라인 교육 템플릿-그린-타입2기능습득선행 VBA로작업하는 읷이무엇이고, 왜필요핚지를 명확하게파악 가장기본적이면서도필수읶매크로기록기능을

작성 예

Do 문에 비해서 시작과 종료, 증감값 지정이 단순

증감값을 지정하는 Step은 기본이 1이고 생략 가능. 그 이외의 증감값은 반드시 Step과 함께 지정

For i= 1 To 10 [Step 1]Cells(i,1)=i

Next

Num=1

Do While Num<=10

Cells(Num,1)=Num

Num=Num+1

Loop

http://cafe.naver.com/vbatutor

Page 61: 오피스튜터 온라인 교육 템플릿-그린-타입2기능습득선행 VBA로작업하는 읷이무엇이고, 왜필요핚지를 명확하게파악 가장기본적이면서도필수읶매크로기록기능을

중첩 For문에서 조건에 맊족하면 Exit For를 이용하여

루프를 벗어나는 예제Sub Exit_For()

Dim Sum As IntegerDim I As IntegerDim J As IntegerDim Co As IntegerFor I = 3 To 1 Step -1

For J = 10 To 1 Step -1Co = Co + 1Cells(J, I).Value = CoSum = Sum + CoIf Sum >= 100 Then Exit For

NextIf Sum >= 100 Then Exit For

NextMsgBox "결과는" & Sum & "입니다"

End Sub

http://cafe.naver.com/vbatutor

Page 62: 오피스튜터 온라인 교육 템플릿-그린-타입2기능습득선행 VBA로작업하는 읷이무엇이고, 왜필요핚지를 명확하게파악 가장기본적이면서도필수읶매크로기록기능을

http://cafe.naver.com/vbatutor

Page 63: 오피스튜터 온라인 교육 템플릿-그린-타입2기능습득선행 VBA로작업하는 읷이무엇이고, 왜필요핚지를 명확하게파악 가장기본적이면서도필수읶매크로기록기능을

다음과 같이 데이터가 입력되도록 프로시저를

작성하시오

http://cafe.naver.com/vbatutor

Page 64: 오피스튜터 온라인 교육 템플릿-그린-타입2기능습득선행 VBA로작업하는 읷이무엇이고, 왜필요핚지를 명확하게파악 가장기본적이면서도필수읶매크로기록기능을

InputBox를 이용하여 숫자를 입력하면 입력된 숫자보다 크거나 같은 데이터의 글꼴이 빨갂색으로 표시되고 해당 읶원수를 MsgBox로 표시하는 프로시저를작성하시오. 프로시저 이름은 "읶원수"라고 핚다.

http://cafe.naver.com/vbatutor

Page 65: 오피스튜터 온라인 교육 템플릿-그린-타입2기능습득선행 VBA로작업하는 읷이무엇이고, 왜필요핚지를 명확하게파악 가장기본적이면서도필수읶매크로기록기능을

프로그램은 알고리즘이 중요

프로그램을 잘 하려면 문법과 어휘 익혀야 함

프로시저는 Sub ~ End Sub와 변수, 실행문으로 구성

변수는 임시 데이터 저장

제어 구문에는 조건 제어 구문과 반복 제어 구문

조건 제어 구문은 If문과 Select문 사용

반복 제어 구문에는 Do문과 For문 사용

http://cafe.naver.com/vbatutor

Page 66: 오피스튜터 온라인 교육 템플릿-그린-타입2기능습득선행 VBA로작업하는 읷이무엇이고, 왜필요핚지를 명확하게파악 가장기본적이면서도필수읶매크로기록기능을

http://cafe.naver.com/vbatutor