본문 바로가기
PROGRAMMING/EXCEL&ACCESS

[엑셀 VBA] Dim 키워드 사용하기

by Hey Nary 2025. 2. 16.
728x90
반응형

 

✅ Dim 키워드는 모듈 수준에서도 사용 가능

Dim 키워드는 모듈 수준과 프로시저 수준에서 모두 사용 가능합니다.

 

📌 코드 분석

' 모듈 수준 변수
Dim 파일 As Workbook
  • 모듈 수준 변수해당 모듈 내에서 어디서든 접근 가능합니다.
  • Dim을 사용해도 Private과 동일한 효과를 가지므로, 같은 모듈 내의 다른 프로시저에서도 파일 변수를 사용할 수 있습니다.
Sub vba()
    ' 프로시저 수준 변수
    Dim score As Integer ' 정수를 저장하는 변수  
    Dim name As String   ' 문자열을 저장하는 변수  
    Dim isPassed As Boolean ' 참/거짓을 저장하는 변수  
End Sub
  • 프로시저 수준 변수해당 프로시저(vba) 내부에서만 유효합니다.
  • 프로시저가 종료되면 메모리에서 사라집니다.
728x90

🚨 오류가 발생하는 경우

1️⃣ 다른 모듈에서 모듈 수준 변수를 사용하려고 할 때

' 모듈1 (Module1)
Dim 파일 As Workbook

' 모듈2 (Module2)
Sub test()
    Set 파일 = Workbooks.Open("C:\example.xlsx") ' 오류 발생 ⚠️
End Sub
  • Dim 파일 As Workbook은 Module1 내에서만 접근 가능
  • 다른 모듈(Module2)에서 사용하려면 Public 파일 As Workbook으로 변경해야 함.

2️⃣ 프로시저 수준 변수를 다른 프로시저에서 사용하려고 할 때

Sub vba()
    Dim score As Integer
    score = 90
End Sub

Sub checkScore()
    MsgBox score ' 오류 발생 ⚠️ (score는 vba() 안에서만 유효)
End Sub
  • score는 vba() 프로시저 안에서만 유효하므로, checkScore()에서 사용할 수 없음.

반응형

🎯 정리: Dim 키워드와 변수 수준

변수 수준 선언 위치 사용 범위 지속 시간
모듈 수준 변수 프로시저 밖 (Dim, Private) 해당 모듈 전체 엑셀 실행 중 유지
프로시저 수준 변수 프로시저 안 (Dim) 해당 프로시저 내부 프로시저 종료 시 삭제
전역 변수 프로시저 밖 (Public) 모든 모듈에서 접근 가능 엑셀 실행 중 유지

 

✅ Dim을 모듈 수준에서 사용할 수 있으며, Private과 동일한 효과를 가짐!
✅ Dim을 프로시저 수준에서 사용하면 해당 프로시저 내부에서만 유효!

 

728x90
반응형

댓글