1. Null·빈 문자열·0부터 서로 다르게 보기
Null은 유효한 데이터가 없다는 특별한 상태입니다. 0은 값이 있는 숫자이고, ""는 길이가 0인 문자열입니다. 화면에서 비어 보인다는 이유만으로 모두 Null이라고 단정하지 않습니다.
예를 들어 배송비가 0이면 무료 배송이라는 값을 입력한 것일 수 있습니다. 배송비가 Null이면 아직 요금이 정해지지 않았을 수 있습니다. 이 둘을 합쳐 버리면 계산은 편해져도 의미는 바뀔 수 있습니다.
VBA의 초기화되지 않은 Variant가 갖는 Empty도 Null과 별개입니다. 시험에서 Null, Empty, "", 0을 섞어 제시하면 먼저 데이터 상태를 나누고 함수를 적용하세요.
2. IsNull은 값을 고치는 함수가 아니라 검사 함수
IsNull(식)의 결과는 Boolean입니다. IsNull(Null)은 True이고, IsNull(1250), IsNull(0), IsNull("")는 모두 False입니다. '미입력 여부를 판단하라'는 요구에 맞지만 '미입력을 0으로 표시하라'는 요구를 혼자 해결하지는 못합니다.
폼에서 IsNull([연락처])를 검사한다고 [연락처] 필드가 바뀌는 것은 아닙니다. 검사가 True일 때 안내 메시지를 보여줄지, 입력을 요구할지, 다른 계산을 할지는 별도 로직으로 정합니다.
오답을 고칠 때는 'IsNull이 Null을 없앤다'가 아니라 'IsNull은 식이 Null인지 알려 준다'로 문장을 바꾸세요. 반환값을 True·False로 적어 보면 Nz와 혼동하기 어렵습니다.
3. = Null 비교 대신 IsNull로 판단하기
VBA에서 If 값 = Null Then처럼 비교하면 기대한 참 분기로 들어가지 않습니다. Null과의 비교 결과 자체가 Null이 되기 때문입니다. 값 <> Null 역시 '값이 있다'는 검사가 되지 않습니다.
Null인지 확인하려면 If IsNull(값) Then, Null이 아닌지 확인하려면 If Not IsNull(값) Then처럼 조건을 구성합니다. 쿼리 조건식 표기와 VBA 코드를 섞어 외우지 말고 입력하는 위치부터 구분하세요.
겉보기에는 간단한 등호 문제지만, Null을 일반 숫자나 문자열로 생각하는지 확인하는 함정입니다. 'Null은 같은 값인지 비교할 대상이 아니라 상태를 검사할 대상'이라는 기준을 붙여 두세요.
4. Nz는 Null일 때만 대체값을 반환
Nz(식, 대체값)에서 첫 번째 식이 Null이면 두 번째 인수를 반환합니다. Nz([배송비], 0)는 배송비가 Null일 때 숫자 0을, Nz([연락처], "미등록")은 연락처가 Null일 때 미등록이라는 문자열을 반환합니다.
첫 번째 식이 Null이 아니면 원래 값을 돌려줍니다. Nz(0, 100)은 100이 아니라 0이며, Nz("", "미등록")도 미등록이 아니라 ""입니다. 빈 문자열까지 바꾸라는 조건은 따로 검사해야 합니다.
계산식에 쓸 숫자 대체값은 0처럼 숫자로, 표시용 안내 문구는 따옴표로 감싼 문자열로 구분하세요. Nz가 바꾸는 것은 해당 식의 반환 결과입니다. 원본 레코드를 갱신하려면 별도의 저장·갱신 작업이 필요합니다.
5. Nz의 두 번째 인수는 생략하지 않는 습관
Access 쿼리 식에서 Nz([배송비])처럼 대체값 인수를 생략하면 Null인 필드에 길이 0인 문자열이 반환됩니다. 숫자 계산을 의도했다면 Nz([배송비], 0)처럼 의도를 명시하는 편이 분명합니다.
Access VBA에서는 인수를 생략한 Nz(Null)이 Empty를 반환하며, 이후 숫자·문자열 문맥에 따라 처리됩니다. 따라서 모든 위치에서 'Nz(Null)은 무조건 숫자 0'이라고 외우면 안 됩니다.
정답을 검토할 때 함수 이름만 맞췄다고 끝내지 마세요. 어느 환경의 식인지, Null일 때 무엇을 반환해야 하는지, 그 결과를 숫자로 계산할지 화면에 문자로 보여줄지까지 확인합니다.
6. Nz를 계산식 안에 넣는 위치가 결과를 바꿉니다
상품금액이 12000이고 배송비가 Null이라고 가정합시다. [상품금액]+[배송비]는 Null이 됩니다. Null을 0 배송비로 취급하라는 조건이라면 [상품금액]+Nz([배송비], 0)의 결과는 12000입니다.
반면 Nz([상품금액]+[배송비], 0)는 이미 Null이 된 합계 전체를 0으로 대체합니다. 결과는 12000이 아니라 0입니다. '항목 하나의 미입력 보정'과 '계산 결과 전체의 미입력 보정'은 다른 작업입니다.
두 필드가 모두 Null일 수 있고 각각 0으로 취급하라는 조건이면 Nz([상품금액], 0)+Nz([배송비], 0)처럼 개별 항목에 적용합니다. 문제에서 모르는 값을 그대로 남기라고 했다면 임의로 0을 넣지 않습니다.
7. IIf는 참일 때 결과와 거짓일 때 결과를 선택
IIf(조건, 참일 때 결과, 거짓일 때 결과) 순서로 씁니다. IIf([점수]>=60, "통과", "재확인")은 Null 전용 처리가 아니라 점수 조건으로 표시 문구를 선택하는 예입니다. 여기의 60은 자체 예제 기준이며 시험 합격 기준 안내가 아닙니다.
IIf(IsNull([배송비]), "미입력", "입력됨")에서 IsNull은 검사, IIf는 안내 문구 선택을 맡습니다. 배송비 0은 Null이 아니므로 입력됨이 나옵니다.
Null일 때 0, 아니면 원래 배송비를 반환하기만 하면 Nz([배송비], 0)가 간결합니다. 반대로 원래 값이 아니라 서로 다른 두 표시 문구를 골라야 하면 IIf가 요구사항을 더 직접적으로 드러냅니다.
8. VBA IIf는 실행을 건너뛰는 If 블록이 아닙니다
VBA의 IIf는 truepart와 falsepart를 모두 평가하고 그중 하나를 반환합니다. 그래서 IIf(수량=0, 0, 금액/수량)처럼 쓰면 수량이 0일 때 금액/수량 평가에서 오류가 날 수 있습니다.
오류가 나는 계산을 아예 실행하지 않아야 한다면 VBA에서는 If...Then...Else 블록으로 실행 경로를 나누세요. Null 여부를 먼저 확인하고, 그다음 0인지 확인한 뒤 안전한 경우에만 나눗셈을 수행하는 식으로 구성합니다.
이 주의점은 '조건에 따라 결과를 반환한다'와 '선택하지 않은 식은 실행하지 않는다'가 다른 말이라는 뜻입니다. Access 식 작성 위치와 VBA 실행 환경을 확인하고, Excel IF의 동작을 그대로 가져와 설명하지 않습니다.
9. 빈 문자열까지 함께 표시해야 하는 경우
연락처가 Null이거나 ""일 때 모두 미등록으로 표시해야 한다면 IIf(Nz([연락처], "")="", "미등록", [연락처])처럼 생각할 수 있습니다. 먼저 Null을 빈 문자열로 맞춘 뒤 길이 0인 문자열과 비교하는 방식입니다.
단, 공백 한 칸인 " "은 ""와 다릅니다. 이 식은 공백만 입력된 문자열까지 자동으로 정리하지 않습니다. 공백 제거 요구가 있다면 별도의 문자열 정리 조건을 검토해야 합니다.
조건에 없는 값까지 임의로 정상화하지 않는 것이 중요합니다. 시험 문제의 'Null만', '빈 문자열도', '공백 제외'라는 표현에 밑줄을 긋고 대상 범위를 먼저 정하세요.
10. 셀프 체크: 먼저 결과를 쓰고 해설과 비교
문제 1: IsNull(0)의 결과는? 문제 2: Nz(Null, "대기")의 결과는? 문제 3: Nz("", "대기")의 결과는? 문제 4: IIf(IsNull(Null), "A", "B")의 결과는?
문제 5: 상품금액=12000, 배송비=Null일 때 [상품금액]+Nz([배송비], 0)의 결과는? 문제 6: 같은 값에서 Nz([상품금액]+[배송비], 0)의 결과는? 두 식에서 괄호가 어디까지 묶이는지 표시하세요.
문제 7: VBA에서 IIf(수량=0, 0, 금액/수량)은 0 나누기를 항상 막는가? 문제 8: Nz([연락처], "미등록")은 원본 연락처 필드를 자동 수정하는가? 반환 결과와 실행·저장 동작을 분리해서 답해 보세요.
11. 정답과 시험 직전 복습 기준
1번 False, 2번 "대기", 3번 "", 4번 "A"입니다. 3번을 틀렸다면 Null과 빈 문자열이 다르다는 기준을 다시 확인하고, 4번에서는 안쪽 IsNull을 먼저 계산하세요.
5번은 12000이고 6번은 0입니다. 7번은 아니며, VBA IIf의 양쪽 식 평가 때문에 위험한 나눗셈을 방어하는 용도로 믿으면 안 됩니다. 8번도 아닙니다. Nz는 식의 값을 반환할 뿐 레코드 저장 명령이 아닙니다.
틀린 문제 옆에 '검사·대체·분기·대체 위치·평가·저장' 중 원인을 하나 적으세요. 널문·엔대·아이갈을 말한 뒤 그 함수가 무엇을 반환하는지까지 설명할 수 있으면 다음 문제에 적용하기가 쉬워집니다.
12. 공식 근거와 적용 범위
2026년 9월 28일 Microsoft Learn의 Application.Nz (Access), IsNull function, IIf function을 확인했습니다. 각각 대체값 생략 시 문맥 차이, Null과 Empty·빈 문자열의 구별, VBA IIf의 양쪽 식 평가를 검토하는 근거입니다.
예제는 Access 표현식과 VBA 학습용으로 구성했으며 실제 Access 실행 검증이나 공식 기출 재현을 했다는 뜻은 아닙니다. 프로시저 작성 전체 순서는 관련 가이드에서 이어 보고, 이 글에서는 Null 처리 기준만 집중 복습하세요.