Notice
Recent Posts
Recent Comments
Link
나만의공간
📘 엑셀 고급 강의 14‑2. VBA 변수 활용 및 사용자 상호작용 입력 처리 본문
📘 엑셀 고급 강의 14‑2. VBA 변수 활용 및 사용자 상호작용 입력 처리
이번 소주제에서는 VBA에서 **변수를 효율적으로 활용**하는 방법과, **InputBox와 MsgBox를 이용한 사용자 입력 및 메시지 안내 기능**을 실습합니다. 실무에서는 입력창과 확인창을 통해 매크로 흐름을 제어하거나 정보를 안내하는 구조가 매우 유용합니다.
1. 변수 선언 및 InputBox 활용 예시
Option Explicit
Sub InputExample()
Dim userInput As String
Dim num As Integer
userInput = InputBox("합산할 숫자 입력:")
If userInput = "" Then
MsgBox "입력이 취소되었습니다."
Exit Sub
End If
num = Val(userInput)
MsgBox "입력하신 숫자는 " & num & " 입니다."
End Sub
- InputBox로 입력받은 값을 문자열 변수
userInput에 저장 - 문자열 → 숫자 변환:
Val()함수 사용 - 사용자가 입력을 취소할 경우 메시지 안내 및 중단 처리 포함
2. 사용자 범위 선택 기반 합계 계산
Sub SumRange()
Dim rng As Range
Dim total As Double
Set rng = Application.InputBox("합할 범위를 선택하세요", Type:=8)
If rng Is Nothing Then
MsgBox "범위 선택이 취소되었습니다."
Exit Sub
End If
total = Application.WorksheetFunction.Sum(rng)
MsgBox "선택한 범위의 총합은 " & total & " 입니다."
End Sub
- InputBox의
Type:=8옵션을 통해 사용자로부터 셀 범위 입력 받기 - 범위를 선택하지 않을 경우 메시지 안내 및 코드 종료 처리
- 선택한 범위를 합산하여 MsgBox로 결과 출력
3. 사용자 확인 메시지와 흐름 제어
Sub ConfirmDelete()
Dim resp As Integer
resp = MsgBox("이 데이터를 삭제하시겠습니까?", vbYesNo + vbQuestion, "삭제 확인")
If resp = vbYes Then
' 데이터 삭제 로직 수행
MsgBox "데이터가 삭제되었습니다."
Else
MsgBox "삭제가 취소되었습니다."
End If
End Sub
- MsgBox를 사용해 사용자에게 Yes/No 선택을 받고 흐름 제어
- 실무에서 삭제, 저장, 편집 등의 확인 절차에 자주 활용
4. 실무 팁 및 주의사항
- InputBox 취소 시 리턴 값이 빈 문자열이므로 반드시 예외 처리 포함
- MsgBox 메시지는 시각적으로 명확하고 간결하게 작성
- 변수 선언 시 자료형 지정 (Long, Double, String 등)을 명확히 설정
Option Explicit선언을 통한 변수 오타 및 타입 오류 방지
5. 요약 정리
- ✅ InputBox와 MsgBox를 활용하면 사용자와 상호작용하는 유연한 매크로 구성 가능
- ✅ 범위선택, 숫자 입력, 확인 메시지 흐름을 변수 기반으로 안정적으로 처리할 수 있습니다
- ✅ 변수 선언, 예외 처리, 명확한 메시지 작성은 안정성과 가독성을 높이는 핵심 요소입니다
'Excel > 고급' 카테고리의 다른 글
| 📘 엑셀 고급 강의 14‑4. 이벤트 기반 자동 실행 및 UDF 응용 실습 (1) | 2025.08.16 |
|---|---|
| 📘 엑셀 고급 강의 14‑3. 루프 및 조건문을 활용한 자동화 흐름 구성 (0) | 2025.08.16 |
| 📘 엑셀 고급 강의 14‑1. VBA 환경 이해 및 기본 구조 소개 (2) | 2025.08.16 |
| 📘 엑셀 고급 강의 13‑3. VBA 매크로 편집 실습: 변수 사용 및 조건문 적용 (2) | 2025.08.15 |
| 📘 엑셀 고급 강의 13‑2. 녹화한 매크로 수정 및 VBA 기본 구조 이해 (0) | 2025.08.15 |
Comments
