[계산작업I18] 여기서 왜 대괄호를 써주어야하나요?
안녕하세요.
1. 엑셀 워크시트와 VBA의 공간 분리
엑셀에서 VBA 창(Alt + F11)은 워크시트와는 완전히 분리된 '독립된 프로그래밍 공간'입니다.
대괄호가 없을 때: 만약 코드에 그냥 계산작업!I18이라고만 적으면, VBA는 이것을 엑셀 셀 주소로 인식하지 못하고 "이게 무슨 영어 단어(변수)지?"라며 당황하다가 컴파일 오류를 내거나 0으로 처리해 버립니다.
대괄호가 있을 때: [계산작업!I18]처럼 대괄호를 딱 감싸주는 순간, VBA는 "아! 담장 너머 엑셀 시트에 있는 '계산작업' 시트의 'I18' 셀로 직접 가서 값을 가져오라는 뜻이구나!"라고 단번에 알아듣습니다.
즉, VBA 안에서 엑셀의 특정 셀(또는 범위)을 가장 짧고 간결하게 가리키는 소통 약속이 바로 대괄호([ ])입니다.
2. '입사연도'에는 왜 대괄호가 없나요?
함수 첫 줄에 있는 Public Function fn비고(입사연도)를 보시면 입사연도에는 대괄호가 없습니다.
이유: 입사연도는 엑셀 시트에 고정된 셀 주소가 아니라, "그때그때 함수를 쓸 때마다 괄호 안에 집어넣어 줄 재료(인수)"로 VBA 창 안에서 이미 정의된 단어이기 때문입니다.
따라서 VBA가 이미 알고 있는 단어(인수)는 대괄호 없이 쓰고, VBA가 모르는 외부 엑셀 시트의 고정된 셀 주소를 콕 집어올 때만 대괄호를 쓴다고 기억하시면 됩니다.
즐거운 하루 되세요.
-
관리자2026-05-27 09:54:28
안녕하세요.
1. 엑셀 워크시트와 VBA의 공간 분리
엑셀에서 VBA 창(Alt + F11)은 워크시트와는 완전히 분리된 '독립된 프로그래밍 공간'입니다.
대괄호가 없을 때: 만약 코드에 그냥 계산작업!I18이라고만 적으면, VBA는 이것을 엑셀 셀 주소로 인식하지 못하고 "이게 무슨 영어 단어(변수)지?"라며 당황하다가 컴파일 오류를 내거나 0으로 처리해 버립니다.
대괄호가 있을 때: [계산작업!I18]처럼 대괄호를 딱 감싸주는 순간, VBA는 "아! 담장 너머 엑셀 시트에 있는 '계산작업' 시트의 'I18' 셀로 직접 가서 값을 가져오라는 뜻이구나!"라고 단번에 알아듣습니다.
즉, VBA 안에서 엑셀의 특정 셀(또는 범위)을 가장 짧고 간결하게 가리키는 소통 약속이 바로 대괄호([ ])입니다.
2. '입사연도'에는 왜 대괄호가 없나요?
함수 첫 줄에 있는 Public Function fn비고(입사연도)를 보시면 입사연도에는 대괄호가 없습니다.
이유: 입사연도는 엑셀 시트에 고정된 셀 주소가 아니라, "그때그때 함수를 쓸 때마다 괄호 안에 집어넣어 줄 재료(인수)"로 VBA 창 안에서 이미 정의된 단어이기 때문입니다.
따라서 VBA가 이미 알고 있는 단어(인수)는 대괄호 없이 쓰고, VBA가 모르는 외부 엑셀 시트의 고정된 셀 주소를 콕 집어올 때만 대괄호를 쓴다고 기억하시면 됩니다.
즐거운 하루 되세요.