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

VBA 구조 이해 - 함수(Method)

오빠두엑셀 by 오빠두엑셀
  • 학습시간 14분
  • 난이도 고급
  • 작성일 2018.09.02

체계적인 코드 작성을 위한다면, 함수를 잘 써야됩니다! - 함수(Method) 알아보기

이 강의에서는 엑셀 VBA의 핵심 구성요소인 Method(함수)의 개념과 사용법을 단계별로 다룹니다. 개체·속성·함수의 관계를 자동차 비유로 이해한 뒤, Method에 붙는 필수·선택 인수의 동작 방식과 두 가지 인수 입력 방식, 그리고 라이브러리 조회·매크로 녹화·커뮤니티 활용까지 원하는 함수를 빠르게 찾는 방법을 정리합니다.

VBA 구조 이해 - 함수(Method)
DOWNLOADS

실습자료를 준비했어요

수업에서 사용한 예제 파일과 보충 자료를 한 곳에 정리했습니다!👇

1. VBA에서 Method(함수)란 무엇인가?

VBA 기초 강의를 잘 따라오고 계신가요? 이전 강의까지 개체(Object)자동차에, 속성(Property)자동차의 속성에 비유하였습니다. 그렇다면 함수(Method)는 무엇일까요?
개체(Object := 자동차)의 정체를 속성(Property)으로 표현했다면, 함수(Method)는 자동차의 동작이라고 표현할 수 있습니다. 아래에서 Method의 대표적인 예시를 살펴보겠습니다.

vba property 예제 1

1. 시동걸기 (Activate)
2. 문열기 (Open)
3. 문닫기 (Close)
4. 움직이기 (Run)
5. 부품정비 (Find) ...

즉, 개체·속성·함수는 하나의 묶음이며 아래와 같이 명사·형용사·동사로 비유할 수 있습니다. 우리가 일상 대화에서 명사만으로 의사소통할 수 없어 형용사와 동사를 함께 사용하듯이, 개체의 Property와 Method는 개체를 보조하여 동작합니다.

개체 (Object) : 자동차 = 명사 (Noun)
속성 (Property) : 자동차의 속성 = 형용사 (Adjective)
함수 (Method) : 자동차의 동작 = 동사 (Verb)

2. Method에는 인수(Argument 또는 Parameter)가 붙습니다.

엑셀 워크시트에서 자주 사용하는 VLOOKUP 함수를 예로 살펴보겠습니다.

= VLOOKUP(lookup_value, table_array, col_index_num, [range_lookup])
‘// 엑셀 워크시트에서 사용되는 모든 함수에는 인수(Parameter)가 따라 붙습니다.
‘// 인수는 필수인수(반드시 입력해야 하는 값)선택인수(선택적으로 입력할 수 있는 값으로, 기본값이 정해져 있음)로 구분됩니다.
VBA Method 무엇인가 엑셀 vba 기초강의 18

VBA에서 사용하는 함수(Method)에서도 인수를 사용하지만, 아래와 같이 일부 함수는 인수 없이 동작합니다.

= Range.Activate '// 범위 활성화
= Range.AutoFit '// 범위 열맞춤
'// 일부 함수는 별도의 인수 없이 간단하게 호출합니다.
VBA Method 무엇인가 엑셀 vba 기초강의 1

하지만 대부분의 함수는 워크시트 함수와 마찬가지로 추가 인수가 필요합니다. 워크시트 함수와 동일하게 대괄호 안에 표시된 인수는 '선택인수'이며, 별도로 입력하지 않으면 기본값에 따라 함수가 동작합니다.

= Range.PasteSpecial ([Paste], [Operation], [SkipBlanks], [Transpose])
'// 대부분의 함수는 워크시트 함수처럼 인수를 포함합니다.
VBA Method 무엇인가 엑셀 vba 기초강의 19

3. 같지만 다른 Method(함수)

일부 Method(함수)는 이름이 같더라도 어떤 개체(Object) 아래에서 사용되는지에 따라 동작이 달라지거나 인수 구성이 달라집니다. 아래 두 가지 예제를 함께 살펴보겠습니다.

Delete 함수

VBA Method 무엇인가 엑셀 vba 기초강의 13

- Worksheet 개체의 Delete (WS.Delete)
  • 인수(Argument)가 붙지 않습니다.
  • Delete 동작 실행 전에 Dialog Box가 호출됩니다. 따라서 Worksheet의 Delete를 실행하기 전에는 일반적으로 Application.DisplayAlerts 속성을 False로 변경하여 알림창으로 인해 매크로 실행이 중단되는 것을 방지합니다.
    VBA Method 무엇인가 엑셀 vba 기초강의 16
- Range 개체의 Delete (Rng.Delete)
  • 추가 인수(Argument)가 붙습니다. Range 개체의 Delete 함수는 셀이 밀리는 방향을 인수로 입력받습니다.
    VBA Method 무엇인가 엑셀 vba 기초강의 17
Copy 함수

VBA Method 무엇인가 엑셀 vba 기초강의 14

VBA Method 무엇인가 엑셀 vba 기초강의 15

- Worksheet 개체의 Copy (WS.Copy)
  • 붙여넣기할 위치(워크시트)를 인수로 입력합니다.
  • Before 또는 After 중 하나만 인수로 지정할 수 있습니다.
- Range 개체의 Copy (Rng.Copy)
  • 붙여넣기할 위치(범위)를 인수로 입력합니다.

4. Method 입력 방법

VBA에서 Method(함수)를 입력하는 방법은 크게 두 가지가 있습니다. 각 방법을 차례대로 살펴보겠습니다.

4-A. 순서에 맞춰 콤마(,)로 구분하여 입력하는 방법
  • 엑셀 워크시트의 함수 입력 방식과 동일합니다.
  • 입력하는 인수의 종류가 적을 경우 두 번째 방법보다 훨씬 간결하게 작성할 수 있습니다.
  • 필수인수(대괄호 "[]"에 포함되지 않은 인수)는 콤마만 찍어 건너뛸 수 없습니다.
  • 대부분의 함수는 이 방식으로 입력합니다.

Sub Test()

Dim WS As Worksheet
Dim Rng As Range

Set WS = ThisWorkbook.Worksheets("Sheet1")
Set Rng = WS.Range("A1")

Rng.PasteSpecial , , , True
‘// 콤마로 모든 선택인수를 건너뛰고 필요한 인수 값만 입력합니다.
VBA Method 무엇인가 엑셀 vba 기초강의 19

WS.SaveAs "파일이름", , "abc"
VBA Method 무엇인가 엑셀 vba 기초강의 2

End Sub

4-B. 인수(Argument)를 직접 지정하여 입력하는 방법
  • 입력해야 할 인수의 종류가 많을 경우, 원하는 인수만 직접 지정하여 입력할 수 있습니다.
  • 첫 번째 방법보다 사용자가 이해하기 쉬운 코드 작성이 가능한 반면, 인수 이름을 직접 지정해야 하므로 코드를 작성하는 데 시간이 더 걸립니다.
  • 인수 이름을 적은 뒤 콜론과 등호(:=)로 구분하여 값을 전달합니다.

Sub Test()

Dim WS As Worksheet
Dim Rng As Range

Set WS = ThisWorkbook.Worksheets("Sheet1")
Set Rng = WS.Range("A1")

Rng.PasteSpecial Transpose:=True
WS.SaveAs Filename:="파일이름", Password:="abc"

‘// 인수의 개수가 많은 경우, 원하는 인수만 직접 지정하여 입력하면 코드가 훨씬 간결하고 명확해집니다.

End Sub

5. Method 검색방법

실무에서 자주 활용하는 3가지 방법을 소개합니다.

5-A. VBA 편집기 - 라이브러리 조회

VBA 편집기에서 키보드 F2 키를 눌러 개체 라이브러리 창을 호출합니다. 원하는 개체나 클래스를 검색하면 해당 항목의 모든 Property·Method·Event를 한눈에 확인할 수 있습니다.

vba property 예제 2

5-B. 매크로 녹화기능 사용

엑셀의 매크로 녹화(Macro Recording) 기능을 활용합니다. 매크로 녹화로 작성된 코드는 사용자의 모든 동작이 단계별로 기록되므로, 이를 분석하면 원하는 작업에 해당하는 핵심 Property와 Method를 손쉽게 파악할 수 있습니다.
개발자 도구(Developer)를 활성화하는 방법은 여기를 참고하세요.

vba property 예제 4

5-C. 관련 커뮤니티 이용

StackOverflow와 같은 프로그래밍 커뮤니티를 잘 활용하면, 기대 이상의 해결책이나 응용 사례를 얻을 수 있습니다.
[관련 링크] StackOverflow 바로가기 http://www.stackoverflow.com

stackoverflow vba

6. 예제코드 전문

// 삽입(Insert) -> 모듈(Module) 에서 모듈을 추가한 뒤 아래 코드를 삽입하세요.
 
Sub Test()
 
Dim WS As Worksheet
Dim Rng As Range
Dim PasteRng As Range
 
Set WS = ThisWorkbook.Worksheets("Sheet1")
Set Rng = Application.InputBox("범위를 선택하세요", Type:=8)
 
Rng.Copy
 
WS.Range("C1").PasteSpecial xlPasteAll, , , True
WS.Range("C2").PasteSpecial Paste:=xlPasteValues, Transpose:=True
 
WS.UsedRange.Columns.AutoFit
 
End Sub

더 자세한 내용은 오빠두엑셀 VBA 1-7 영상강의를 참조해 주세요!

댓글 10
5 (9개 평가)
sm****
sm**** 2020.10.04 11:34
좋은 정보 감사합니다! 이거부터 천천히 다 정독하도록 하겠습니다!
shi****
shi**** 2020.11.27 16:09
Set Test() : 지금부터 이 명령문 모음을 Test라고 이름짓겠다.
Dim [A] As [B] : [A]라는 변수의 자료 타입을 [B]로 선언한다
Set [A] = [C] : [A]라는 변수에 [C]라는 자료를 대입하겠다.
라고 이해하면 맞는 건가요?
또한, 메서드 명 뒤에 띄어쓰기를 하고 , , 를 하시는데 범례에는 () 로 나와있는데, 띄어쓰기와 () 둘 다 자유롭게 사용 가능한건가요?
오빠두엑셀
오빠두엑셀 작성자 2020.11.29 04:39
안녕하세요.
VBA에서 함수를 사용할 시, 변수를 지정할 경우 예를들어,
A = SUM(B,C)
위와 같을 시에는 괄호로 입력하되 변수로 지정하지 않고 함수를 직접 실행할 경우 예를들어,
SUM B,C
위와 같을 때는 괄호를 입력하지 않습니다.
답변이 도움이 되셨길 바랍니다. 감사합니다.
이하늘
이하늘 2020.12.13 19:51

차근차근 공부하도록 하겠습니다.😍

코끼리손
코끼리손 2021.01.13 14:09
좋은 자료 감사합니다 ^^
언리미트
언리미트 2021.07.21 08:13
VBA 를 꼭 정복하고 싶어요
dico****
dico**** 2021.10.01 20:23
1-7까지 한번에 다 봤어요. 좋은 강의 감사합니다.
몽해
몽해 2022.08.06 20:17
잘 보았습니다
감사합니다.
www****
www**** 2022.10.20 22:57
좋은 강의 감사합니다.
강민준🤗
강민준🤗 2024.08.09 13:59
좋은 강의 감사합니다.