Excel - VBA

[VBA] Module이나 Sub의 크기 한계

EGTools 2023. 12. 10. 23:05
728x90

VBA를 사용하면서 Code의 길이 때문에 문제가 되었던 적은 없었는데,

얼마나 많은 코드를 넣을 수 있는지 쓸데없이 궁금해졌습니다.

 

그래서,,,

얼마나 긴 코드를 하나의 Sub 또는 Module에 작성할 수 있는지 점검해 봤습니다.

 

하나의 라인에 글자가 100개 이상 들어간 라인을 계속 반복해서 넣었을 때,

7,274행까지는 컴파일이 되었고, 그 이후로는 아무리 짧은 코드를 넣어도 "프로시저가 너무 큽니다." 오류가 나옵니다.

Debug.Print "0001ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
...
Debug.Print "7274ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
'// code line이 7274행까지 컴파일이 되며, 이 코멘트 줄은 영향을 미치지 않음
'// 추가 코드를 아래쪽에 기재하면 '프로시저가 너무 큽니다' 컴파일 오류가 발생함
'Debug.Print "7275"

 

라인 길이를 짧게해서 전체 크기와 관련이 있는지 확인했으나,

아래처럼 짧은 라인으로 작성해도 7,274라인까지만 입력이 가능했습니다.

두 줄을 한 줄에 작성할 수 있는 콜론(:)을 사용해서 라인수만 줄인 경우에는

콜론이 있는 만큼 가능한 라인수가 줄었으므로 라인을 줄이는 효과가 없었습니다.

아래쪽으로 코멘트를 추가했을 때에는 정상적으로 컴파일 되었으므로 코멘트는 영향을 미치지 않습니다.

 

하나의 Module에는 얼마나 많은 라인이 가능한지 테스트용으로 

7,274개 라인과 2~4줄의 코멘트가 들어 있는 프로시저 9개를 만들어 넣었습니다.

 

우연인지는 몰라도 65,530라인 이후로는 스페이스만 쳐도

아래와 같이 "메모리가 부족합니다." 오류가 뜹니다.
코멘트를 넣어도 동일하므로 Module에서는 코멘트도 라인수 제한에 포함되 되는 걸 알 수 있습니다.

 

작성된 테스트 매크로는 마지막까지 잘 작동했고, 저장하는 데에도 문제 없었습니다.

 

VBA_Size_Test.xlsm
0.76MB

 

 

그럼 결론은 아래처럼

Sub 하나에 입력할 수 있는 Line수는 총 7,274 Lines (코메트 제외)

Module 하나에 입력할 수 있는 Line수는 총 65,530 Lines (코멘트 포함)

 

참, 혹시나 PC 환경에 영향을 받는지 몰라서 첨부 파일을 테스트해서 Sub나 Module을 더 크게 할 수 있는지 점검해 보신 분들은 댓글로 알려주시면 좋겠습니다.

 

TEST 환경 : Windows 11 Pro 64bit,  Excel 2019 64bit,  PC Memory 16GB

 

 

PS) 답글을 주신 분들의 의견을 종합해 보면 대체적으로 아래와 같습니다.

Sub 하나에 입력할 수 있는 Line수 : 32bit  5,035Lines, 64bit  7,274Lines (코멘트 제외)

Module에 입력할 수 있는 Line 수 :  32/64bit 공통으로 65,530Lines (코멘트 포함) 

728x90