1. 아별툴
  2. 아별툴 패밀리
  3. 엑셀 질문하기
  4. 엑셀 강좌
  5. 엑셀 팁
  6. 엑셀 자료실
  7. 엑셀 연구과제
  8. 엑셀 북마크
  9. 관련 프로그램 소개

[VBA] 전역변수 설정하기. Public 문, Private 문

조회 수 14136 추천 수 0 2008.07.01 15:57:54

출처 : 엑사모

예제파일 다운 받기 : vba16_3_4_ex.zip


-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------

16-3,16-4. Public 문, Private 문
이기춘  (Homepage) 2003-10-25 01:55:11, 조회 : 1,889, 추천 : 9
- Download #1 : vba16_3_4_ex.zip (9.0 KB), Download : 353

Public 문

변수를 프로젝트 어느 곳에서든 사용하고자 할 경우에 사용합니다. (전역 변수)

Global 문과 동일한 효과를 나타냅니다.
Global 문을 사용하는 대신에 Public 문을 사용하시기 바랍니다.

Private 문

변수를 지역으로 사용하고자 할 경우에 사용합니다. (지역 변수)


전역변수:
프로젝트의 어느 곳에서도 해당 변수가 사용될 수 있는 변수입니다.

지역변수:
자신이 속해있는 모듈, 폼, 클래스, 프로시저등 그 선언된 곳에서만 사용될 수 있는 변수입니다.

전역변수와 지역변수는 변수의 수명과도 관련된 내용입니다.



예제로 살펴보겠습니다.

아래 코드는 Module1 에 작성합니다.

Option Explicit

Public Const HomePage As String = "http://www.excellove.com"
Public PubVar As String
Private PriVar As String

Sub Main()

PubVar = "이 변수는 전역 변수로 선언된 변수입니다." & vbCr & vbCr & _
"이 변수가 선언된 위치는 Module1 입니다." & vbCr & vbCr & _
"변수가 전역으로 선언되면 그 위치에 관계없이" & vbCr & vbCr & _
"프로젝트의 어느 곳에서도 그 변수명을 사용할 수 있습니다." & vbCr & vbCr & _
"전역 변수로 선언된 이 변수는 Module2 에 있는 프로시저가(Pub_Pri_Ex2) 호출되어도" & vbCr & vbCr & _
"그 값을 여전히 가지고 있으므로 이 내용을 볼 수 있습니다."

PriVar = "이 변수는 지역 변수로 선언된 변수입니다." & vbCr & vbCr & _
"이 변수가 선언된 위치는 Module1 입니다." & vbCr & vbCr & _
"변수가 지역으로 선언되면 자신이 선언된 곳" & vbCr & vbCr & _
"(여기에서는 Module1) 안에서만 사용할 수 있습니다." & vbCr & vbCr & _
"지역 변수로 선언된 이 변수는 Module2 에 있는 프로시저가(Pub_Pri_Ex2) 호출되면" & vbCr & vbCr & _
"그 값을 인식하지 못하고 이 메시지를 볼 수 없습니다."

Call Pub_Pri_Ex
Call Pub_Pri_Ex2

End Sub

Sub Pub_Pri_Ex()

MsgBox "이 메시지 박스는 Module1 에 작성된 프로시저입니다." & vbCr & vbCr & _
"변수명 : PubVar" & vbCr & vbCr & _
PubVar, vbInformation, HomePage

MsgBox "이 메시지 박스는 Module1 에 작성된 프로시저입니다." & vbCr & vbCr & _
"변수명 : PriVar" & vbCr & vbCr & _
PriVar, vbInformation, HomePage

End Sub

아래 코드는 새 모듈을 추가하고 Module2 에 작성합니다.

주) Module2 에는 테스트를 위하여 Option Explicit 문이 없음을 유의 하십시요.
만약에 여러분의 코드에 Option Explicit 문이 있다면 Pub_Pri_Ex2 가 호출될 때 컴파일 오류가 발생하게 됩니다.


Sub Pub_Pri_Ex2()

MsgBox "이 메시지 박스는 Module2 에 작성된 프로시저입니다." & vbCr & vbCr & _
"변수명 : PubVar" & vbCr & vbCr & _
PubVar, vbInformation, HomePage

MsgBox "이 메시지 박스는 Module2 에 작성된 프로시저입니다." & vbCr & vbCr & _
"변수명 : PriVar" & vbCr & vbCr & _
PriVar, vbInformation, HomePage

End Sub

실행은 Main 프로시저를 실행하도록 합니다.

문서 첨부 제한 : 0Byte/ 2.00MB
파일 제한 크기 : 2.00MB (허용 확장자 : *.*)
List of Articles
번호 제목 글쓴이 날짜 조회 수sort
공지 기타 엑셀 VBA 간단한 팁 모아놓기.. +_+ [레벨:30]아별 2007-01-24 34135
65 기타 [펌] 한글을 자음 모음으로 나누기 + 합치기(초성,중성,종성) [레벨:30]아별 2022-03-22 2635
64 엑셀.. 잡다구리.. 폼에서 홈페이지 링크 등.. [레벨:30]a☆ 2004-10-25 3398
63 기타 [펌] 추가 기능 개발시 리본메뉴에 넣을 MSO Image 쉽게 확인하기 imagefile [레벨:30]아별 2015-01-09 3555
62 엑셀에서 에러 처리 [1] [레벨:30]a☆ 2004-10-23 3743
61 엑셀 기본작업 매크로.. 선택/입력/복사 등 [레벨:30]a☆ 2004-10-25 3864
60 엑셀에서 매크로 실행 동안 화면이 업데이트 되지 않게 하기.. [레벨:30]a☆ 2004-10-26 3927
59 [엑셀VBA 기본 규칙] 순환문.. [레벨:30]a☆ 2005-08-04 4202
58 기타 [VBA] 컴퓨터 이름 알아내기 등 PC 환경 변수 읽오이기.. Environ [레벨:30]아별 2015-04-08 4565
57 [엑셀VBA] 변수의 전달 [레벨:30]a☆ 2005-05-13 4614
56 엑셀의 내용을 복사해서 메모장을 띄우고 붙여넣기 [레벨:30]a☆ 2005-07-21 4803
55 하이퍼링크 일괄 제거하기 [레벨:30]a☆ 2005-07-21 5005
54 엑셀 실행시 자동으로 실행 // 종료시 자동으로 실행 [레벨:30]아별 2004-10-25 5085
53 [펌] 엑셀로 최대 공약수 구하기 [2] [레벨:30]아별 2008-12-18 5316
52 셀의 상대 위치 이동< offset(행,열) >과 절대 위치 이동.. [레벨:30]a☆ 2004-10-20 5444
51 메모 입력할때 사용자 이름 제거하고 입력하기.. [레벨:30]a☆ 2006-01-19 5449
50 엑셀 도구모음에 콤보박스로 매크로 실행하기.. +_+ [레벨:30]a☆ 2005-11-03 5478
49 바로 옆셀의 메모값 가져 오기 [1] [레벨:30]아별 2008-10-20 5525
48 스스로 사라지는 메시지 박스 file [1] [레벨:30]아별 2009-05-07 5644
47 기타 VBA로 인디언식 이름 만들어주는 사용자 정의 함수 만들기.. imagefile [1] [레벨:30]아별 2012-01-11 5770
46 마우스 좌표를 반환 받기 file [레벨:30]아별 2009-05-07 5874