엑셀 VBA 속성(Property) 총정리 강의 :: VBA 기초

엑셀 VBA 의 구성요소 중 하나인 속성 (Property)에 대한 기초 이론과 간단한 예제코드를 살펴봅니다.

# VBA

작성자 :
오빠두엑셀
최종 수정일 : 2021. 11. 10. 21:59
URL 복사
메모 남기기 : (6)

엑셀 VBA Property 속성이란 무엇인가요? | 엑셀 VBA 강의 1-6

실습파일 무료E-Book 강의 PPT 파일 완성파일
첨부파일에 이상이 생겼을 경우, 1:1 문의하기로 연락주시면 신속히 해결해드리겠습니다. 

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 '// : 해당 셀의 전체 행

2-A. 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셀의 행높이를A1셀의 열넓이 값으로 변경합니다.

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

다양한 방법이 있겠지만 저는 주로 3가지 방법을 사용합니다.

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

VBA편집기에서 키보드 F2키를 눌러 라이브러리 창을 불러옵니다. 원하는 개체 또는 클래스를 검색하면 해당 항목에 대한 모든 Property 및 Method 그리고 Event에 대해 확인할 수 있습니다.

vba property 예제 2
VBA 편집기의 라이브러리를 조회하면 각 개체(Object)의 다양한 속성을 확인할 수 있습니다.
4-B. 매크로 녹화기능 사용

엑셀에서 Macro Recording (매크로 녹화기능)을 활용합니다. 매크로 녹화기능을 통해 코드를 작성하게 되면 모든 행동 하나하나가 상당히 자세하게 기록됩니다. 따라서 매크로 녹화기능을 통해 작성된 코드를 분석하면 원하는 행동에 대한 Key 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

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

5 6 투표
게시글평점
6 댓글
Inline Feedbacks
모든 댓글 보기
6
0
여러분의 생각을 댓글로 남겨주세요.x