이전 글에서 VBA의 개체, 컬렉션 그리고 개체의 구성원을 알아보았습니다. 개체의 속성 등을 사용하기 위해서는 종속관계인 부모 개체를 표기하여 개체를 불러와서 사용해야 합니다. 하지만 이런 방식으로 코딩을 하게 되면 개체의 종속관계를 쓰는 길이가 길어질 수 있어서 프로그래머 입장에서는 타이핑 양이 많아지게 됩니다. 이를 줄여서 간단하게 쓰기 위해 단축 접근자에 대해서 알아보고자 합니다.
1. 개체에 접근하는 방법
먼저 개체에 접근하여 구성원을 사용하는 방법에 대해 알아보겠습니다. 아래 링크의 이전 글을 보시면 개체 구성원 사용하는 방법을 확인하실 수 있습니다.
이전 글 마지막에 두 가지 예를 들었었는데 아래와 같습니다.
① 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
'엑셀 > VBA' 카테고리의 다른 글
엑셀 VBA 개체 변수 및 배열 변수에 대해 알아보기 (0) | 2021.09.20 |
---|---|
엑셀 VBA - Sub 프로시저 (0) | 2021.09.20 |
엑셀 개체 이벤트, 속성 및 메서드 알아보기 (0) | 2021.09.18 |
액셀 VBA에서 개체와 컬렉션에 대해 알아보기 (0) | 2021.09.18 |
VBA 사용자 정의 폼과 컨트롤 도구로 엑셀 시트에 데이터 입력하기 (0) | 2021.09.02 |