Please Enable JavaScript!
Gon[ Enable JavaScript ]

엑셀 VBA 변수 범위 종류와 설정 방법

엑셀(Excel)/VBA
반응형

변수 범위는 크게 3가지로 나눌 수 있습니다. 3가지는 함수, 모듈, public 모듈 레벨 입니다. 변수를 어느 위치에 설정하느냐에 따라 참조할 수 있는 범위가 결정됩니다. 함수 범위는 함수 내에 지정한 변수로 함수를 벗어난 곳에서는 참조를 할 수 없습니다. 모듈 은 모듈 파일에 설정한 변수로 해당 모듈을 벗어난 곳에서는 참조를 할 수 없습니다. “public” 지시어가 붙은 변수는 어느 곳에서나 참조가 가능합니다. 각각 샘플을 통해서 어떻게 사용해야 하는지 알아 보도록 하겠습니다.

 

 

3가지 변수 범위에 대해 테스트 구조는 다음과 같습니다. Sheet1 ActiveX 버튼을 하나 만들어서 클릭 이벤트 발생시킵니다. 그리고 Module1 에 있는 함수 Sub1, Sub2 함수를 호출하는 것입니다.

엑셀 VBA 변수 범위 종류와 설정 방법

 

모듈에 있는 2개의 함수는 다음과 같습니다. 이런 이벤트 호출 과정을 통해 변수의 범위를 테스트해 보려고 합니다

엑셀 VBA 변수 범위 종류와 설정 방법

 

아래는 참고하면 좋을 만한 글들의 링크를 모아둔 것입니다.
엑셀 VBA 변수 생명 주기 지정하는 방법, Static 정적 변수 사용법
엑셀 VBA 연산자 사용해서 String 문자열을 합치기
엑셀 VBA Option Explicit 문 변수선언 에러 적용하기
엑셀 VBA 매개변수 전달 방식 ByRef, ByVal 의 차이점
엑셀 VBA 입력된 값 형식 확인 Information 관련 함수 모음

 

 



 

첫 번째 함수 안에서 사용하는 지역 변수를 다른 함수에서 사용하는 경우입니다. 함수 안에 설정한 변수는 함수를 벗어난 곳에서는 사용할 수 없다고 했습니다. 그림과 같이 sub2 에서 sub1 에 있는 변수를 참조하려면 에러가 나겠죠. sub1 에 있던 str 변수의 생명주기는 sub1 함수가 끝나는 순간 사라지기 때문에 다른 함수에서 사용할 수가 없습니다

엑셀 VBA 변수 범위 종류와 설정 방법

 

이것을 해결하려면 두 번째 방법인 모듈 내에서 사용할 수 있도록 범위를 넓히는 것입니다. 함수를 벗어난 Module1 페이지 상단에 변수를 설정하는 것입니다. 그림과 같이 설정해 두면 sub2 에서도 참조가 가능하겠죠.

엑셀 VBA 변수 범위 종류와 설정 방법

 

그런데 같은 모듈이 아닌 외부에서 str 변수를 참조하면 에러가 납니다. Sheet1 에서 변수를 참조하고 싶은데 에러가 난다면 어떻게 해야 할까요

엑셀 VBA 변수 범위 종류와 설정 방법

 

“public” 지시어를 사용하는 것입니다. 그럼 str 변수는 Project 어느 곳에서도 참조가 가능하게 됩니다

엑셀 VBA 변수 범위 종류와 설정 방법

아래는 참고하면 좋을 만한 글들의 링크를 모아둔 것입니다.
엑셀 VBA 변수 생명 주기 지정하는 방법, Static 정적 변수 사용법
엑셀 VBA 연산자 사용해서 String 문자열을 합치기
엑셀 VBA Option Explicit 문 변수선언 에러 적용하기
엑셀 VBA 매개변수 전달 방식 ByRef, ByVal 의 차이점
엑셀 VBA 입력된 값 형식 확인 Information 관련 함수 모음
반응형
Posted by 녹두장군1
,