스킬캠퍼스
6강 · Sub와 함수
강의

오늘 끝나면

Sub와 함수

  • Sub와 함수의 핵심 문제를 한 문장으로 설명한다
  • 오른쪽 실습에서 Sub와이 어떻게 움직이는지 관찰한다
  • 다음 강의와 이어지는 한계를 말할 수 있다

실습 미션

프로시저·인자 — 작업을 묶어 재사용 이 문장이 실제로 무슨 뜻인지 실습에서 한 번 손으로 확인한다.

성공 조건

  • 실습의 기본값을 먼저 관찰
  • 입력값이나 모드를 한 번 이상 바꿔 결과 비교
  • 왜 결과가 바뀌었는지 한 문장으로 설명

엑셀 VBA · 06

Sub와
함수

코드 한 덩이를 이름 붙여 묶는 게 프로시저임.
Sub는 동작만, Function은 값을 돌려줌.
인자로 입력 받아 한 번 만들고 계속 재사용함.

P.01엑셀 VBA · 06

프로시저 = 코드를 이름으로 묶은 덩어리

매크로 하나가 길어지면 손도 못 댐. 그래서 동작 단위로 묶어 이름을 붙임. 그 묶음이 프로시저임.

프로시저는 두 종류임.
Sub는 동작을 묶음 / 시키면 일을 함.
Function은 계산을 묶음 / 시키면 답을 돌려줌.

둘 다 모양은 비슷함.
Sub 이름() ... End Sub
Function 이름() ... End Function
엑셀에서 누르는 매크로는 전부 Sub임. 매크로 = 인자 없는 Sub라고 보면 됨.

흩어진 코드 → 이름 하나로
흩어진 코드를 이름으로 묶음
묶기 전 — 같은 줄이 여기저기

Range("A1").Value = 0

Range("A1").Value = 0

Range("A1").Value = 0

묶은 뒤 — Sub 하나로

Sub 초기화()

Range("A1").Value = 0

End Sub

초기화 ← 이름만 부르면 끝

프로시저 = 코드 덩어리에 붙인 이름
P.02엑셀 VBA · 06

Sub는 동작, Function은 값

가장 큰 갈림길은 하나임. 값을 돌려주냐 아니냐.

Sub는 일만 함. 셀에 쓰고, 색 칠하고, 메시지 띄움. 끝나도 손에 남는 값이 없음.
호출은 그냥 이름만 적음 / 색칠하기.

Function은 값을 돌려줌. 그래서 받을 변수가 있어야 함.
합 = 더하기(3, 5) 처럼 = 오른쪽에 둠.
함수 안에서는 함수이름 = 결과로 돌려줄 값을 정함. 이 한 줄이 핵심임.

그래서 Function은 엑셀 셀에서도 바로 씀 / =더하기(A1,B1).
내가 만든 함수가 SUM 옆에 사는 거임.

시키면 일함 vs 시키면 답함
Sub ↔ Function
SubFunction
역할동작을 함값을 돌려줌
끝맺음End SubEnd Function
돌려줄 값없음함수이름 = 결과
호출색칠하기합 = 더하기(3,5)
셀에서못 씀=더하기(A1,B1)
값을 손에 남기려면 Function
P.03엑셀 VBA · 06

인자 — 밖에서 값을 넣어준다

프로시저가 진짜 쓸모 있어지는 건 인자 덕분임. 괄호 안으로 값을 받아 그때그때 다르게 일함.

선언할 땐 받을 자리를 적음 / Function 더하기(a As Long, b As Long).
여기서 a, b가 매개변수 / 받을 그릇임.

호출할 땐 실제 값을 넣음 / 더하기(3, 5).
넣은 3, 5가 인자 / 실제로 들어가는 값임.
순서대로 짝지어짐 / a=3, b=5.

인자만 바꾸면 같은 코드가 다른 일을 함.
더하기(10, 20)은 30, 더하기(1, 1)은 2.
코드는 하나, 결과는 무한대임.

괄호 안으로 값이 들어감
인자가 괄호로 들어감
호출 — 실제 값(인자)

더하기(3, 5)

↓ 순서대로 짝지음
선언 — 받을 자리(매개변수)

Function 더하기(a, b)

a = 3
b = 5

인자만 바꾸면 같은 코드가 다른 답을 냄

P.04엑셀 VBA · 06

직접 호출해 본다

말로 백 번 듣는 것보다 한 번 호출해 보는 게 빠름. 오른쪽에서 인자를 넣고 직접 굴려보셈.

위 슬라이더로 a, b를 정함. 그게 괄호 안으로 들어가는 인자임.
호출할 프로시저를 골라 실행하면 아래에 무슨 일이 일어나는지 그대로 나옴.

Sub 색칠(a, b)는 셀을 칠하는 동작만 함 / 돌려받는 값 칸이 비어 있음.
Function 더하기(a, b)는 합을 돌려줌 / 반환값 칸에 숫자가 박힘.

같은 인자라도 Sub는 손에 남는 게 없고, Function은 값을 남김. 이 차이를 눈으로 확인하면 끝임.

인자를 넣고 Sub·Function을 굴려봄
프로시저 호출기 · 인자를 넣어 실행
호출할 프로시저
인자 — 괄호 안에 들어가는 값
a3
b5
실행될 코드

Function 더하기(a, b)

더하기 = a + b

End Function

호출: 더하기(3, 5)

결과 — Sub는 동작, Function은 값
반환값
동작(셀)

Function이라 합을 돌려줌 — 반환값 칸에 박힘. 셀은 안 건드림.

호출 기록 — 최근 5건

아직 호출 안 함. ▶ 눌러보셈.

P.05엑셀 VBA · 06

한 번 만들면 계속 재사용

프로시저의 진짜 값어치는 재사용임. 한 번 잘 만들면 어디서든 이름만 부르면 됨.

더하기를 한 번 정의해두면, 보고서 합계도 그걸로, 세금 계산도 그걸로 부름.
한 프로시저가 다른 프로시저를 부르기도 함 / 작은 블록을 쌓아 큰 일을 함.

고칠 일이 생겨도 정의 한 곳만 손보면 부르는 데 전부 반영됨.
같은 코드를 열 군데 복붙해두면 열 군데를 다 고쳐야 함 / 그게 버그의 시작임.

그래서 자동화의 기본기는 “반복되는 동작을 프로시저로 묶기”임.
다음(7강)에 배울 이벤트·폼도 결국 이 프로시저를 버튼에 연결하는 일임.

Q. 값을 돌려주는 것은? (Sub · Function · Dim · Range)정답은 Function임.
Function함수이름 = 결과로 값을 돌려줘서 합 = 더하기(3,5)처럼 받을 수 있음.
Sub는 동작만 하고 값을 안 돌려줌 / 매크로가 바로 Sub임.
Dim은 변수 선언, Range는 셀을 가리키는 거라 프로시저가 아님.
같은 함수 · 다른 인자로 여러 번
한 번 정의 · 여러 번 호출
정의 한 곳

Function 더하기(a, b)

더하기(10, 20)보고서 합계30
더하기(3, 5)세금 계산8
더하기(1, 1)재고 갱신2
고칠 땐 정의 한 곳만 — 부르는 데 전부 반영

3줄 요약

  1. 1프로시저·인자 — 작업을 묶어 재사용
  2. 2Sub와 함수은 매크로 → 변수·셀 → 조건·반복 → 폼 → 자동화 흐름 안의 한 칸이다.
  3. 3개념을 외우는 것보다 입력을 바꾸면 무엇이 달라지는지 보는 것이 우선이다.

완료 전 점검

복습 카드

Sub와

프로시저·인자 — 작업을 묶어 재사용

매크로

기록하거나 작성해 실행하는 자동화 코드

Sub

실행 단위가 되는 프로시저