![전 국민 코딩 시대 엑셀 VBA 기초 2 - VBA 변수와 상수(Dim As, Option Explicit)](https://poortechguy.com/image/VmsmzlxV4vE.webp)
전 국민 코딩 시대 엑셀 VBA 기초 2 - VBA 변수와 상수(Dim As, Option Explicit)
전 국민 코딩 시대 엑셀 VBA 기초 2 - VBA 변수와 상수(Dim As, Option Explicit) 전 국민 코딩 시대 엑셀 VBA 기초 2 - VBA 변수와 상수(Dim As, Option Explicit)"에 대해 알아보겠습니다 1 VBA 변수(Variable) 와 상수(Constant) 변수(Variable)는 말 그대로 변하는 값이고, 상수(Constant)는 변하지 않는 고유의 값을 의미합니다 모든 프로그래밍 언어에서 항상 변수의 위치는 좌측에 위치하며, 상수는 우측에 위치하기 때문에 "변수 = 상수"와 같은 형태를 갖습니다 변수는 상수의 값을 기억하기 위한 기억 공간으로, "Avar = 5"라고 한다면 변수 Avar이라는 기억 공간에는 숫자 5를 기억할 것입니다 VBA 직접 실행 창에서 [ Avar = 5 : Print Avar ]를 실행한다면 변수 Avar의 값이 5가 출력 됩니다 변수는 가장 최근의 값을 기억 하기 때문에 , 예를 들어 [ Avar = 5 : Avar = 6 : Avar =7 : Print Avar ]의 출력 결과는 변수 Avar의 가장 최근 값인 7을 출력합니다 모듈창에서도 [ Avar = 5 : Avar = 6 : Avar =7 : Print Avar ]의 출력 결과는 변수 Avar의 가장 최근 값인 7을 출력합니다 2 변수의 선언 Dim(Dimension) 앞에서 살펴보았지만 엑셀 VBA에서는 변수를 선언하지 않아도 기본적인 동작을 하지만, 다른 프로그래밍 언어에서는 변수를 선언하여야 합니다 엑셀 VBA에서도 변수를 선언하지 않고 사용할 경우 나중에 어떤 문제가 발생할 수 있으며, 이럴 경우 에러를 잡는데 하세월 시간을 낭비해야 하는 경우도 있기 때문에 반드시 VBA로 프로그래밍 시 반드시 변수를 선언하는 게 맞습니다 변수의 선언은 Dim을 사용하며, 형식은 "Dim (변수명) As (데이터 또는 개체)"의 형식으로 작성합니다 3 VBA 변수의 조건 가 변수 명의 첫 자는 반드시 영문자로 시작해야 합니다 나 변수명은 영문자, 숫자, 밑줄(_)을 포함할 수 있습니다 다 공백이나 특수 문자는 포함할 수 없습니다 라 Visual Basic에서 사용되는 예약어(Reserved Words : 키워드)는 변수명으로 사용할 수 없습니다 ( 예 : Print, Debug, Rem, Dim, Integer, String 등 ) 마 유니크한 변수명 사용, 같은 범위(scope) 내에서 동일한 이름의 변수를 중복하여 선언할 수 없습니다 바 변수명은 해당 변수가 나타내는 데이터나 기능을 잘 설명하는 의미 있는 변수명을 선택합니다 사 의미 있는 변수명을 선택하면 VBA 코드의 가독성을 높일 수 있습니다 아 메모리 사용량 고려하여 필요한 만큼의 변수를 선언으로 메모리를 효율적으로 사용하여 성능을 최적화합니다 4 프로시저명 작성 규칙 프로시저명의 작성 규칙도 변수명 작성규칙이 적용되며, 프로시저에는 뒤에 반드시[ "()" ]를 사용하여야 합니다 5 데이터 유형(Data Type) 가 변수를 선언할 때 적절한 데이터 유형을 지정해야 합니다 나 데이터 유형은 변수가 저장할 수 있는 값의 종류와 크기를 결정합니다 다 정수(Integer, Long, LongLong), 실수(Single, Double), 문자열(String), 논리(Boolean), 날짜 및 시간(Date) 등이 일반적으로 사용됩니다 6 변수의 초기화 가 변수를 선언할 때 값을 할당할 수도 있고, 나중에 값을 할당할 수도 있습니다 나 초기값이 지정되지 않으면 변수는 해당 데이터 유형의 기본값으로 초기화됩니다 7 유효한 변수의 범위(Scope) 선언 가 지역 변수(Private Variable : Private으로 선언)는 현재 모듈 또는 프로시저 내에서 유효합니다 나 모듈 수준 변수(Module Variable : Private으로 선언 또는 선언 없음 )는 모듈 내에서만 접근할 수 있습니다 다 전역 변수(Public Variable : Public으로 선언)는 선언된 모듈과 다른 모듈에서도 변수가 유효합니다 라 광역 변수(Global Variable : Global로 선언)는 전체 프로젝트에서 유효한 변수의 선언 방법입니다 변수 선언 요구(Option Explicit) 설정 하지만 최 상단에 "Option Explicit"를 선언하게 되면 Module 내의 VBA 코드에서 사용하는 모든 변수는 반드시 선언을 하여야 합니다 만약 아래와 같이 "Option Explicit"를 선언 후 변수의 선언 없이 실행한다면, 아래와 같이 에러 메시지창을 만나게 됩니다 그나마 "Option Explicit"를 선언하였기에 어디에서 무슨 이유로 에러가 났는지 알려 주지만, VBA 에러 메시지창에 "Error 8"이런 식으로 나오면 무슨 이유로 에러가 나왔는지 해결하느라고 애먹습니다 8 변수 선언 요구(Option Explicit) 설정 새로운 모듈 또는 프로시저 작성 시 첫 줄에 [ Option Explicit ]을 입력해야 하는 일은 귀찮을 수도 있기 때문에 아예, 새로운 모듈(Module) 또는 유저폼(UserForm)의 프로시저 작성 시 자동으로 변수 선언 요구(Option Explicit)이 자동으로 나오게 하기 위해 VBA 메뉴 중 [도구] [옵션]에서 [변수 선언 요구]를 체크 선택합니다 이제부터 새로운 모듈(Module) 또는 유저폼(UserForm)의 프로시저 작성 시 자동으로 Option Explicit이 젓줄에 표시되고, Option Explicit는 반드시 첫 줄에 위치 있어야 합니다 9 변수를 사용한 프로그램 예제 출처 입력 아래와 같이 작성한 VBA 코드의 결과는 Option Explicit Sub Direct_Test() ' 변수 선언 Dim Sname_Irum As String Dim Kor_Score, Eng_Score, Mat_Score, Tot_Score As Integer Dim Avr_Score As Single ' 변수 초기값 할당 Sname_Irum = "앤드류" Kor_Score = 100 Eng_Score = 95 Mat_Score = 85 ' 총점, 평균 계산 Tot_Score = Kor_Score + Eng_Score + Mat_Score Avr_Score = Tot_Score / 3 Debug Print Sname_Irum, Kor_Score, Eng_Score, Mat_Score, Tot_Score, Avr_Score End Sub ================================================================== 참고 : 네이버 블로그 - 전 국민 코딩 시대 엑셀 VBA 기초 2 - VBA 변수와 상수(Dim As, Option Explicit)