언제 실행되는 코드인지 나누기
사용자폼 문제에서는 폼이 열릴 때 목록과 기본값을 준비하는 작업, 등록 단추를 눌렀을 때 입력값을 검사하고 시트에 쓰는 작업, 종료 단추를 눌렀을 때 닫는 작업이 구분됩니다.
모든 코드를 한 프로시저에 모으면 실행 시점이 달라져 의도하지 않은 결과가 생깁니다.
먼저 주어진 컨트롤의 이름을 확인하세요.
화면의 “수량”이라는 레이블과 코드에서 사용하는 txt수량이라는 이름은 같은 역할이 아닙니다.
이벤트 이름도 단추 이름과 맞아야 합니다.
문자·숫자·범위를 순서대로 검사하기
수량은 숫자인지 확인한 뒤 숫자로 변환하고, 그다음 허용 범위를 검사합니다.
숫자가 아닌 문자열을 먼저 CDbl로 바꾸면 입력 안내 대신 실행 오류가 날 수 있습니다.
아래 코드는 입력 검사 부분만 보여 주는 자체 예제이며 등록 전체 코드가 아닙니다.
If Not IsNumeric(txt수량.Value) Then
MsgBox "수량은 숫자로 입력하세요."
txt수량.SetFocus
Exit Sub
End If
If CDbl(txt수량.Value) < 1 Then
MsgBox "수량은 1 이상이어야 합니다."
txt수량.SetFocus
Exit Sub
End If성공 사례 하나만으로 끝내지 않기
문제에서 정수·날짜·필수 입력을 요구한다면 다음처럼 실패 사례를 따로 준비합니다.
입력이 잘못됐을 때 메시지가 나오더라도 시트에 일부 값이 먼저 기록되면 올바른 검사가 아닙니다.
| 시험할 입력 | 확인할 동작 |
|---|---|
| 필수 이름이 빈칸 | 등록되지 않고 해당 입력칸으로 포커스 이동 |
| 수량에 문자·0·소수 입력 | 문제에서 허용한 범위와 정수 조건에 맞게 거부 |
| 존재하지 않는 날짜 | 날짜 검사 결과와 메시지 확인 |
| 정상 자료 연속 두 건 | 다음 빈 행에 각각 기록되고 기존 행은 유지 |
| 종료 확인에서 아니요 | 폼이 유지되고 입력 내용이 사라지지 않음 |
종료 단추와 창 닫기를 구분하기
Unload Me는 코드로 폼을 종료하는 방식입니다.
창의 닫기 단추는 다른 경로로 실행되므로 QueryClose 이벤트를 요구하는 문제에서는 CloseMode와 Cancel을 구분해야 합니다.
무조건 취소하면 종료 단추에서도 폼이 닫히지 않을 수 있습니다.
CELL UP에서는 지원하는 이벤트 선택과 F5 실행을 이용해 코드를 작성하고 사용자폼을 직접 조작할 수 있습니다.
실행 오류가 나면 표시된 줄로 이동해 수정한 다음 같은 입력을 다시 시험해 보세요.
브라우저 실습 뒤 실제 Excel에서 확인할 것
브라우저 실습은 입력 검사와 기본 시트 조작을 반복하는 데 활용하세요.
전체 VBA 개체 모델, DAO·COM, 외부 파일이나 추가 기능을 모두 지원하는 환경은 아닙니다.
시험 전에 실제 Excel의 VBA 편집기에서 프로젝트 선택, 이벤트 연결, 파일 저장과 재실행도 직접 확인하는 것이 필요합니다.
기능 설명 참고 자료
예제와 설명은 CELL UP에서 작성했습니다. 제품 기능의 원문 설명은 아래 공식 자료에서 확인할 수 있습니다.
직접 조작하며 확인해 보세요
관련 유형을 선택해 연습합니다. 진행 중인 작업은 새 문제를 시작하기 전까지 보관됩니다.
관련 유형 연습