
Excel에서 VBA와 이름 정의 범위(Named Ranges)를 활용해 자동으로 초기화되는 입력 양식을 만들면 데이터 입력 작업이 훨씬 간편해지고 업무 생산성도 크게 향상됩니다. 이런 양식은 데이터를 제출한 후 입력 필드를 자동으로 비워주기 때문에, 여러 건의 레코드를 빠르게 연속 입력해야 하는 상황에 특히 적합합니다.
이 튜토리얼에서는 VBA와 이름 정의 범위를 사용해 자동 초기화 양식을 만드는 방법을 단계별로 소개합니다.
예제로 직원 정보를 입력받아 데이터베이스 시트에 저장하고, 제출 후에는 양식이 자동으로 초기화되는 간단한 직원 정보 입력 양식을 만들어 보겠습니다.
1단계: 워크시트 구조 설정하기
- 새 Excel 통합 문서를 엽니다.
- 양식 레이아웃을 구성합니다.
- Sheet1의 이름을 "Form"으로 변경합니다.
- Form 시트에 아래와 같은 레이아웃을 만듭니다.

- 각 레이블 옆에 데이터를 입력할 빈 셀(B2, B3, B4, B5)을 배치합니다.
데이터베이스 시트 설정하기:
- 새 워크시트를 삽입하고 이름을 "Database"로 변경합니다.
- 1행에 다음과 같은 제목을 입력합니다.
- Name (이름)
- Department (부서)
- Salary (급여)
- Start Date (입사일)
- Entry Date (입력일)

2단계: 이름 정의 범위 만들기
이름 정의 범위를 사용하면 VBA 코드에서 셀을 참조할 때 훨씬 더 명확하고 관리하기 쉬워집니다. 양식의 모든 입력 셀에 대해 이름을 정의해 보겠습니다.
- B2 셀을 선택합니다.
- 수식 입력줄 왼쪽에 있는 이름 상자(Name Box)에 Name을 입력합니다.
- Enter 키를 누릅니다.

- 나머지 셀도 같은 방식으로 이름을 지정합니다.
- B3: Department
- B4: Salary
- B5: StartDate
이름 정의 범위 확인하기:
- 수식(Formulas) 탭으로 이동한 후 이름 관리자(Name Manager)를 선택하거나 Ctrl+F3를 누릅니다.
- 모든 이름 정의 범위가 올바르게 생성되었는지 확인합니다.
- 닫기(Close)를 클릭합니다.

3단계: 양식 버튼 만들기
제출 버튼 추가하기:
- Form 시트로 이동합니다.
- 개발 도구(Developer) 탭 >> 삽입(Insert) >> 양식 컨트롤(Form Controls)에서 단추(Button)를 선택합니다.

- 원하는 위치에 단추를 그립니다.
- 매크로 이름을 묻는 창이 나타나면 SubmitandClearForm이라고 입력합니다.
- 확인(OK)을 클릭합니다.

- 단추를 마우스 오른쪽 버튼으로 클릭한 후 텍스트 편집(Edit Text)을 선택합니다.

- 버튼 텍스트를 Submit and Clear Form(제출 및 양식 지우기)으로 변경합니다.

초기화 버튼 추가하기:
- 단추를 하나 더 삽입합니다.
- 매크로 이름은 ClearForm으로 지정합니다.
- 버튼 텍스트를 Clear Form(양식 지우기)으로 변경합니다.

참고: 개발 도구 탭이 보이지 않는다면 파일(File) → 옵션(Options) → 리본 사용자 지정(Customize Ribbon)에서 개발 도구(Developer)에 체크하여 활성화할 수 있습니다.
4단계: VBA 코드 작성하기
- 개발 도구(Developer) 탭 >> Visual Basic을 선택합니다.
- 메뉴에서 삽입(Insert) >> 모듈(Module)을 클릭합니다.

- 아래 VBA 코드를 복사해서 붙여넣습니다.
SubmitForm VBA 코드:
Sub SubmitandClearForm()
Dim ws As Worksheet
Dim dbSheet As Worksheet
Dim lastRow As Long
Dim formValid As Boolean
' 워크시트 참조 설정
Set ws = ThisWorkbook.Sheets("Form")
Set dbSheet = ThisWorkbook.Sheets("Database")
' 데이터베이스에서 다음 빈 행 찾기
lastRow = dbSheet.Cells(dbSheet.Rows.Count, 1).End(xlUp).Row + 1
' 양식 데이터를 데이터베이스로 복사
dbSheet.Cells(lastRow, 1).Value = Range("Name").Value
dbSheet.Cells(lastRow, 2).Value = Range("Department").Value
dbSheet.Cells(lastRow, 3).Value = Range("Salary").Value
dbSheet.Cells(lastRow, 4).Value = Range("StartDate").Value
dbSheet.Cells(lastRow, 5).Value = Now() ' 입력 시각 기록
' 양식 초기화
ClearForm
' 완료 메시지 표시
MsgBox "직원 데이터가 성공적으로 제출되었습니다!", vbInformation, "Success"
' 커서를 이름 입력란으로 되돌림
Range("Name").Select
End Sub

코드 설명:
- Form 시트의 이름 정의 범위에서 입력값을 가져옵니다.
- 가져온 데이터를 Database 시트의 다음 빈 행에 타임스탬프와 함께 저장합니다.
- ClearForm 매크로를 호출해 양식 필드를 초기화합니다.
- 확인 메시지를 표시하고 커서를 Name 입력란으로 이동시킵니다.
ClearForm VBA 코드:
Sub ClearForm()
' 이름 정의 범위를 사용해 모든 양식 필드 지우기
Range("Name").ClearContents
Range("Department").ClearContents
Range("Salary").ClearContents
Range("StartDate").ClearContents
' 첫 번째 필드로 포커스 이동
Range("Name").Select
End Sub

코드 설명:
- Form 시트의 모든 입력 필드(Name, Department, Salary, StartDate) 내용을 삭제합니다.
- 커서를 Name 입력란으로 되돌려 다음 데이터 입력을 빠르게 시작할 수 있도록 합니다.
5단계: 자동 초기화 양식 테스트하기
- 통합 문서를 매크로 사용 통합 문서(.xlsm) 형식으로 저장합니다.
- 양식 필드에 데이터를 입력합니다.
- Submit and Clear Form 버튼을 클릭합니다.

- 양식 데이터가 자동으로 데이터베이스 시트에 저장되고, 양식은 자동으로 초기화됩니다. 커서는 첫 번째 입력란으로 돌아가 새로운 데이터 입력을 기다립니다.

- 제출된 데이터는 Database 시트에 순차적으로 저장됩니다.

- 또한 Clear Form 버튼을 사용하면 제출 여부와 관계없이 입력된 내용을 즉시 지울 수 있습니다.

- 커서 역시 첫 번째 입력란으로 되돌아갑니다.

자동 초기화 양식의 장점
- 효율성: 입력 내용을 수동으로 삭제할 필요가 없어 시간을 절약할 수 있습니다.
- 정확성: 반복 작업에서 발생하는 실수를 줄여줍니다.
- 편의성: 사용자 경험과 데이터 입력 속도를 동시에 향상시킵니다.
마무리
위 단계를 따라 하면 VBA와 이름 정의 범위를 활용한 완전히 작동하는 자동 초기화 양식을 만들 수 있습니다. 이제 Excel 양식은 매번 입력 후 스스로 초기화되어 업무 흐름을 크게 개선해 줄 것입니다. 이름 정의 범위를 사용하면 코드의 유지보수가 쉬워지고 가독성도 좋아지며, 자동 초기화 기능은 효율적인 데이터 입력 환경을 보장합니다.