다음 중 아래 프로시저에 대한 설명으로 옳지 않은 것은?Sub Loca… | [컴퓨터활용능력 1급 필기] 15년 1회차 기출문제 상세 페이지
1[컴퓨터활용능력 1급 필기] 15년 1회차
다음 중 아래 프로시저에 대한 설명으로 옳지 않은 것은?
Sub LocalVariable()
Dim strMsg As String
strMsg = "작업이 완료되었습니다."
MsgBox strMsg
End Sub
Sub OutsideScope()
MsgBox strMsg
End Sub
1
LocalVariable()에서 strMsg를 문자열 변수로 선언 하였다.
2
LocalVariable()에서 변수 strMsg에 "작업이 완료되었습니다."라는 문자열을 대입시킨다.
3
LocalVariable()에서 변수 strMsg 내용을 MsgBox를 이용해 대화상자에 표시한다.
4
OutsideScope()에서도 LocalVariable()에서 선언된 strMsg 변수가 적용되어 MsgBox를 이용해 대화 상자에 표시한다.
해설
제시된 코드는 두 개의 독립된 프로시저로 이루어져 있다. LocalVariable 프로시저는 Dim strMsg As String 으로 문자열 변수를 선언하고, 여기에 "작업이 완료되었습니다." 를 대입한 뒤 MsgBox strMsg 로 그 내용을 대화상자에 표시한다. 선언·대입·표시라는 세 동작은 모두 이 프로시저 안에서 정상적으로 이루어진다.
문제의 핵심은 변수의 유효 범위(Scope) 다. 프로시저 내부에서 Dim 으로 선언한 변수는 지역 변수(Local Variable) 로, 그 프로시저가 실행되는 동안에만 존재하고 프로시저가 끝나면 소멸한다. 따라서 다른 프로시저에서는 같은 이름으로 접근할 수 없다.
그 결과 OutsideScope 프로시저의 MsgBox strMsg 는 LocalVariable 에서 만든 값을 이어받지 못한다. 이 프로시저 입장에서 strMsg 는 전혀 다른(값이 비어 있는) 변수일 뿐이어서 빈 대화상자가 뜨며, Option Explicit 가 지정된 모듈이라면 선언되지 않은 변수라는 컴파일 오류가 난다. 다른 프로시저에서도 값을 공유하려면 모듈 맨 위에서 Public 또는 Dim(모듈 수준) 으로 선언해야 한다.
내용에 오류가 있거나 최신 법령·기준과 다른 부분이 보이면 알려주세요. 확인 후 반영하겠습니다.