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

VBA 구조 이해 - 속성(Proprty)

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

VBA 동작 원리를 이해하기 위한 첫단추! - 속성(Property) 알아보기

이 강의에서는 VBA의 핵심 구성요소인 Property(속성)의 동작 원리를 자동차 비유로 풀어 정리합니다. Object 계층에 따른 작성 방식, 또 다른 Object를 반환하는 Property의 특징, 읽기 전용 속성의 개념까지 단계별로 다루어 VBA 코드의 구조를 견고하게 이해할 수 있습니다.

VBA 구조 이해 - 속성(Proprty)
DOWNLOADS

실습자료를 준비했어요

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

1. VBA에서 Property(속성)란 무엇인가?

이전 강의에서 VBA의 개체(Object)를 자동차에 비유하여 설명하였습니다. 이번 강의에서도 같은 비유를 이어가, Property(속성)의 개념을 정리합니다.
자동차 1대를 떠올려 보겠습니다. 이 자동차가 가진 속성에는 어떤 것들이 있을까요? 매우 다양한 항목이 있겠지만, 대표적인 몇 가지만 아래와 같이 정리해보겠습니다.

vba property 예제 1

1. 제조사 (Brand)
2. 모델 (Model)
3. 크기 (Size)
4. 연비 (Efficiency)
5. 엔진 (Engine) ...

이처럼 자동차의 속성은 해당 자동차의 특징을 나타내는 각 항목으로 구성되며, VBA에서 사용하는 Property 역시 동일한 원리로 동작합니다.

1-A. VBA의 Property는 Object의 계층에 따라 작성합니다.

다음 코드를 살펴보겠습니다.

MyCar.Model = “520d”
‘// 자동차에 익숙한 사람이라면 해당 모델이 ‘BMW’ 브랜드 제품임을 짐작할 수 있지만, 코드에서는 각 속성을 명확히 표기하기 위해 일반적으로 아래와 같이 작성합니다.

MyCar.Brand(“BMW”).Model = “520d”
‘// 이렇게 작성하면 하위 항목인 모델을 지정하기 위해 상위 항목인 제조사부터 단계별로 내려오므로 속성의 계층 구조를 명확하게 이해할 수 있습니다.

1-B. Property는 세부 항목을 가질 수 있습니다.

다음 코드를 살펴보겠습니다.

MyCar.Color = vbRed
‘// 표현 범위가 너무 광범위한 속성입니다. 외부 색상인지 내부 색상인지, 차량 전체를 빨간색으로 칠할 것인지 일부만 적용할 것인지 명시되지 않았습니다. 따라서 실제 코드에서는 아래와 같이 세분화하여 작성합니다.

MyCar.Outerior.Color = vbRed
MyCar.Interior.Color = vbBlack
‘// 외부 색상은 빨간색, 내부 색상은 검정색으로 지정해 이전보다 속성을 더욱 명확하게 표현하였습니다. 실무 코드에서는 이보다 더 세분화된 형태로 작성하게 됩니다.

2. Property는 또 다른 Object를 반환할 수 있습니다.

일부 Property는 아래처럼 단순한 값을 반환합니다.

Range(“A1”).Address '// : 셀 주소를 반환합니다.
Range(“A1”).Value '// : 셀에 입력된 값을 반환합니다.
Range(“A1”).Column '// : 셀의 열 번호를 반환합니다.
Range(“A1”).RowHeight '// : 셀의 행 높이를 반환합니다.

반면 대다수의 Property는 또 다른 Object를 반환합니다.

ThisWorkbook.Worksheets(“Sheet1”)
.Range(“A1”).Interior.Pattern '// : 셀의 무늬(패턴)
.Range(“A1”).Font.Color '// : 글꼴 색상
.Range(“A1”).Comment(1) '// : 셀의 메모
.Range(“A1”).EntireRow '// : 해당 셀의 전체 행

Object를 반환하면 어떤 차이가 있나요?

다음의 간단한 예시를 살펴보겠습니다.

Dim Rng as Range
 
Set Rng = Worksheets(“Sheet1”).Range(“A1”)// Rng는 Object이므로 Set 키워드를 사용해 변수를 지정합니다.
 
Comment = Rng.Comment(1)// Comment 또한 Object로 반환되므로, Set 없이 일반 변수에 할당하면 VBA에서 오류가 발생합니다.// 따라서 각 Property가 반환하는 값의 자료형을 정확히 이해하면 코드를 더욱 빠르고 안정적으로 작성할 수 있습니다.

3. 읽기 전용(Read-Only) Property

일부 Property는 읽기만 가능합니다. 즉 해당 VBA Property(속성)에 새로운 값을 덮어씌우는 것이 불가능합니다. 대표적인 예시는 다음과 같습니다.

Range.Address
'// : 범위의 셀 주소입니다. 셀 고유의 식별자이므로 읽기 전용으로 동작합니다.
Application.ActiveWorkbook.Path
'// : 워크북의 경로입니다. 엑셀이 실행되는 동안 변경할 수 없는 고유 값이므로 읽기 전용입니다.
Application.ActiveWorkbook.Fullname
'// : 워크북의 경로를 포함한 전체 파일명입니다. 경로와 마찬가지로 읽기 전용으로 사용됩니다.

한편 대부분의 Property는 읽기와 쓰기를 모두 지원합니다.

Range(“A1”).Value = ThisWorkbook.Name
‘// A1셀의 값을 현재 워크북의 파일명으로 덮어씁니다.
Range(“A1”).Font.Color = vbBlue
‘// A1셀의 글꼴 색상을 파란색으로 변경합니다.
Range(“A1”).RowHeight = Range(“A1”).ColumnWidth
‘// A1셀의 행 높이를 같은 셀의 열 너비 값으로 변경합니다.

4. 각 Object(개체)의 Property(속성)을 확인하는 방법

다양한 방법이 있지만, 실무에서는 주로 다음 세 가지 방법을 사용합니다.

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

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

vba property 예제 2

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

엑셀의 Macro Recording(매크로 녹화) 기능을 활용하는 방법입니다. 매크로 녹화 기능을 사용하면 사용자의 행동 하나하나가 매우 자세하게 코드로 기록됩니다. 따라서 녹화된 코드를 분석하면 원하는 작업에 필요한 핵심 Property와 Method를 손쉽게 파악할 수 있습니다.
개발자 도구(Developer)를 활성화하는 방법은 여기에서 확인할 수 있습니다.

vba property 예제 4

4-C. 관련 커뮤니티 활용

StackOverFlow와 같은 프로그래밍 커뮤니티를 잘 활용하면 예상보다 풍부한 자료와 사례를 확보할 수 있습니다.
[관련링크] StackOverFlow 바로가기 http://www.stackoverflow.com

stackoverflow vba

5. 예제코드 전문

// 삽입(Insert) -> 모듈(Module) 에서 모듈을 추가한 뒤 아래 코드를 삽입하세요.
 
Sub Test()
 
‘// 변수 할당
Dim WB As Workbook
Dim WS As Worksheet
Dim Rng As Range
 
‘// 변수 지정
Set WB = ThisWorkbook
Set WS = WB.Worksheets("Sheet1")
Set Rng = WS.Range("A1")
 
‘// 개체 속성 변경
Rng.Value = WB.Name
Rng.Font.Color = vbBlue
Rng.RowHeight = Rng.ColumnWidth
 
End Sub
댓글 6
5 (6개 평가)
굴레악
굴레악 2020.07.11 13:23
기본 감이 잡혀 가고 있습니다.
몽해
몽해 2022.08.06 20:00
잘 보았습니다
감사합니다.
향기나무
향기나무 2022.08.18 15:56
좋은가의 감사합니다. 잘 봤습니다.
푸른하늘너머
푸른하늘너머 2023.02.25 00:01
상세한 설명 감사드립니다.
강민준🤗
강민준🤗 2024.08.09 13:59
좋은 강의 감사합니다🙇‍♂️
비온뒤쨍쨍
비온뒤쨍쨍 2024.10.06 21:40
감사합니다.~~