본문 바로가기

엑셀/VBA

엑셀 VBA 개체에 단축 접근자 및 글로벌 개체를 이용하기

반응형

이전 글에서 VBA의 개체, 컬렉션 그리고 개체의 구성원을 알아보았습니다. 개체의 속성 등을 사용하기 위해서는 종속관계인 부모 개체를 표기하여 개체를 불러와서 사용해야 합니다. 하지만 이런 방식으로 코딩을 하게 되면 개체의 종속관계를 쓰는 길이가 길어질 수 있어서 프로그래머 입장에서는 타이핑 양이 많아지게 됩니다. 이를 줄여서 간단하게 쓰기 위해 단축 접근자에 대해서 알아보고자 합니다.

 

 

 

1. 개체에 접근하는 방법

 먼저 개체에 접근하여 구성원을 사용하는 방법에 대해 알아보겠습니다. 아래 링크의 이전 글을 보시면 개체 구성원 사용하는 방법을 확인하실 수 있습니다.

 

엑셀 개체 이벤트, 속성 및 메서드 알아보기

 

엑셀 개체 이벤트, 속성 및 메서드 알아보기

앞에서 개체(Object)와 컬렉션에 대해 알아보았습니다. VBA에서는 이 개체를 제어하기 위해 많은 속성과 메서드를 제공합니다. 속성과 메서드 양은 방대하여 모두 외워서 사용하기는 힘듭니다. 그

mr-johndoe.tistory.com

 

이전 글 마지막에 두 가지 예를 들었었는데 아래와 같습니다.

 

① Worksheets(1).Name = "sample"

 

ActiveWorkbook.Sheets.Add after:=ActiveWorkbook.Worksheets(ActiveWorkbook.Worksheets.Count)

 

①번 예의 경우에는 Worksheets 개체로 바로 접근하여 Name 속성을 사용하였습니다. 하지만, ②번 예의 경우에는 Sheets 개체에 접근하기 위해 종속관계를 모두 표기하여 접근해서 메서드를 사용하였습니다.

바로 ①번 예의 경우가 단축 접근자를 사용한 예입니다.

기본적으로 ②번 예가 개체 접근방식으로 올바른 방법이지만 작성하기 힘들기 때문에 VBA에서는 단축 접근자를 제공하여 빠르게 개체에 접근할 수 있도록 배려를 해 준 것입니다.

 

①번 예에는 단축 접근자인 ActiveWorkbook이 앞에 생략되어 있는 것입니다.

 

    ActiveWorkbook.Worksheets(1).Name = "sample"

 

2. 단축 접근자

아래 표에 단축 접근자를 정리해 놓았습니다.

단축 접근자 설명
ThisWorkbook 현재 코드가 저장되어 있는 파일
ActiveWorkbook 현재 열려있는 파일
ActiveWindow 화면에 표시되어 있는 윈도우 창
ActiveSheet 활성화 되어 있는 워크시트
ActiveChart 활성화 되어 있는 차트
ActiveCell 활성화 되어 있는 셀
Selection 현재 선택되어 있는 개체

 

다음과 같이 VBA 코딩을 하였습니다.

 

     Range("A1").Value = 123

 

이 예제 코딩은 단축 접근자가 앞에 생략되어 있는 것으로 간주되어 실제 코딩을 풀어쓰면 다음과 같습니다.

 

     ActiveSheet.Range("A1").Value = 123

 

이 코드의 의미는 현재 활성화 되어 있는 워크시트의 A1 셀에 123 값을 입력하라는 뜻입니다. 

하지만 이럴 경우 작성자가 원하는 것은 워크시트 1번의 A1 셀에 값을 입력하는 것이었는데 실제 활성화되어 있는 워크시트가 2번 시트였다면 원치 않은 결과를 얻을 수 있습니다. 코딩할 때 이러한 점을 유의하시며 VBA 프로그램을 작성하시기 바랍니다.

 

1번 워크 시트의 A1 셀에 입력하라는 코딩은 다음과 같이 작성하실 수 있습니다. 

 

     Worksheets(1).Range("A1").Value = 123

 

이 코드 역시도 단축 접근자가 앞에 생략되어 있습니다. 바로 현재 열려있는 파일을 뜻하는 단축 접근자입니다.

 

     ActiveWorkbook.Worksheets(1).Range("A1").Value = 123

 

 

 

3. 글로벌 개체

 단축 접근자를 사용하지 않아도 부모 개체를 표시하지 않고 접근하여 개체 구성원을 사용할 수 있는 개체도 있습니다. 아래 표를 참조해 주세요.

 

글로벌 개체 설명
Workbooks 사용중인 Workbook 컬렉션 개체
Worksheets 사용중인 Worksheet 컬렉션 개체
WorksheetFunction VBA에서 사용할 수 있는 워크시트 함수 개체
Sheets 사용중인 모든 Sheet 컬렉션 개체
Range 셀 또는 셀 범위 개체
Cells 셀 주소를 사용하여 셀에 접근하는 셀 개체
Intersect 겹치는 범위를 의미하는 Range 개체
Names 정의된 이름의 집합인 Name 컬렉션 개체
Charts 사용중인 차트 컬렉션 개체

 

4. With문을 이용하여 개체 구성원 사용하기

 하나의 개체에 대해 여러가지 구성원을 사용할 경우 이를 간편하게 작성할 수 있도록 VBA에서 With를 제공합니다. With 문을 사용하는 방법은 다음과 같습니다.

 

     With 개체명

           .구성원1

           .구성원2

           :

           :

           .구성원n

     End With

 

예를 통해 With 문에 대해 알아보겠습니다. 다음과 같은 예제 코딩을 작성하였습니다.

 

     Sub sample( )

           Range("A1").Value = 10000

           Range("A1").NumberFormat = "#,###"

     End Sub

 

A1 셀에 10000 값을 입력하고 표시 형식을 10,000로 표현하도록 코딩하였습니다.

이 코딩에서 Range 개체의 구성원 2가지를 사용하였습니다. 이를 With 문을 사용하여 작성하면 다음과 같습니다.

 

     Sub sample( )

           With Range("A1")

                  .Value = 10000

                  .NumberFormat = "#,###"

           End With

     End Sub

 

반응형