Application 개체

InputBox 메서드

노만e 2025. 3. 14. 04:37

엑셀 VBA에서 Application.InputBox 메서드는 사용자로부터 입력을 받을 때 사용됩니다.

기본 InputBox 함수와 비슷하지만, 데이터 타입을 지정할 수 있다는 점이 가장 큰 차이점입니다.


1. 기본 문법

변수 = Application.InputBox("메시지", "제목", "기본값", 좌표X, 좌표Y, "HelpFile", "Context", 입력유형)
매개변수
설명
"메시지"
사용자에게 표시할 메시지
"제목"
입력창의 제목
"기본값"
기본 입력값 (선택 사항)
좌표X, 좌표Y
입력창의 위치 (선택 사항)
"HelpFile", "Context"
도움말 파일 및 컨텍스트 ID (선택 사항)
입력유형
입력할 데이터 유형 (숫자, 문자열, 범위 등)

2. 입력 유형 (Type 값)

유형 번호
입력 데이터 유형
0
모든 유형 (기본값)
1
숫자
2
텍스트 (문자열)
4
논리값 (True/False)
8
셀 범위 (Range 개체)
16
오류 값
64
배열

3. 기본 사용 예제

Sub 기본_InputBox()
Dim 입력값 As String
입력값 = Application.InputBox("이름을 입력하세요.", "사용자 입력")
MsgBox "입력한 값: " & 입력값
End Sub

📌 사용자가 입력한 값을 메시지 박스로 출력

📌 "홍길동" 입력 시 → "입력한 값: 홍길동"


4. 숫자 입력 받기 (Type:=1)

Sub 숫자입력()
Dim 점수 As Double
점수 = Application.InputBox("점수를 입력하세요.", "점수 입력", , , , , , 1)

If 점수 <> 0 Then
MsgBox "입력한 점수: " & 점수
Else
MsgBox "숫자를 입력해야 합니다!", vbExclamation
End If
End Sub

📌 숫자만 입력 가능 (Type:=1)

📌 숫자가 아닌 값을 입력하면 "0" 반환


5. 셀 범위 선택 (Type:=8)

Sub 범위선택()
Dim 선택범위 As Range
Set 선택범위 = Application.InputBox("범위를 선택하세요.", "범위 선택", , , , , , 8)

If Not 선택범위 Is Nothing Then
MsgBox "선택한 범위: " & 선택범위.Address
End If
End Sub

📌 사용자가 선택한 셀 범위를 변수에 저장

📌 "A1:B5" 선택 시 → "선택한 범위: $A$1:$B$5"


6. 논리값 (True/False) 입력 (Type:=4)

Sub 논리값입력()
Dim 응답 As Boolean
응답 = Application.InputBox("계속할까요? (True/False)", "논리값 입력", , , , , , 4)
If 응답 Then
MsgBox "사용자가 'True'를 선택했습니다."
Else
MsgBox "사용자가 'False'를 선택했습니다."
End If
End Sub

📌 True 또는 False 입력 가능 (Type:=4)

📌 "True" 입력 시 → "사용자가 'True'를 선택했습니다."


7. 배열 입력 (Type:=64)

Sub 배열입력()
Dim 입력배열 As Variant
입력배열 = Application.InputBox("쉼표로 구분된 값을 입력하세요.", "배열 입력", , , , , , 64)
If IsArray(입력배열) Then
MsgBox "입력한 값: " & Join(입력배열, ", ")
End If
End Sub

📌 쉼표(,)로 구분된 값을 입력하면 배열로 저장됨

📌 "A, B, C" 입력 시 → "입력한 값: A, B, C"


8. 비밀번호 입력 (문자 마스킹)

VBA에서는 InputBox에서 입력한 문자를 마스킹(****)하는 기능이 없음

📌 대신 UserForm을 사용하거나 Application.InputBox로 우회 가능

Sub 비밀번호입력()
Dim 비밀번호 As String
비밀번호 = Application.InputBox("비밀번호를 입력하세요.", "보안 입력", , , , , , 2)
If 비밀번호 = "1234" Then
MsgBox "로그인 성공!"
Else
MsgBox "비밀번호가 틀렸습니다.", vbCritical
End If
End Sub

📌 "1234" 입력 시 "로그인 성공!"

📌 그 외 입력 시 "비밀번호가 틀렸습니다."


9. 입력값을 특정 셀에 저장

Sub 입력값_셀저장()
Dim 입력값 As String
입력값 = Application.InputBox("저장할 데이터를 입력하세요.", "데이터 입력", "기본값")
If 입력값 <> "" Then
Range("A1").Value = 입력값
MsgBox "입력한 값이 A1에 저장되었습니다."
End If
End Sub

📌 입력한 데이터를 A1 셀에 저장

📌 "안녕하세요" 입력 시 → A1 = "안녕하세요"


10. 입력값 검증 (숫자 범위 제한)

Sub 숫자_범위_입력()
Dim 점수 As Double
Do
점수 = Application.InputBox("0~100 사이의 점수를 입력하세요.", "점수 입력", , , , , , 1)
Loop Until 점수 >= 0 And 점수 <= 100
MsgBox "입력한 점수: " & 점수
End Sub

📌 0~100 사이의 숫자만 입력 가능 (잘못된 값 입력 시 다시 입력 요청)


11. 입력값을 반복하여 여러 개의 셀에 저장

Sub 여러셀_입력()
Dim 이름 As String, 나이 As String, 주소 As String
이름 = Application.InputBox("이름을 입력하세요.", "입력")
나이 = Application.InputBox("나이를 입력하세요.", "입력", , , , , , 1)
주소 = Application.InputBox("주소를 입력하세요.", "입력")
If 이름 <> "" And 나이 <> "" And 주소 <> "" Then
Range("A1:C1").Value = Array("이름", "나이", "주소")
Range("A2").Value = 이름
Range("B2").Value = 나이
Range("C2").Value = 주소
MsgBox "데이터가 저장되었습니다!"
Else
MsgBox "입력이 취소되었습니다.", vbExclamation
End If
End Sub

📌 사용자로부터 여러 개의 입력값을 받아 A1:C2에 저장

📌 입력 취소 시 "입력이 취소되었습니다." 메시지 표시


📝 정리

기능
VBA 코드
기본 입력
Application.InputBox("메시지", "제목")
숫자 입력
Application.InputBox("숫자 입력", Type:=1)
범위 선택
Application.InputBox("범위 선택", Type:=8)
논리값 입력
Application.InputBox("True/False 입력", Type:=4)
배열 입력
Application.InputBox("배열 입력", Type:=64)
비밀번호 입력
Application.InputBox("비밀번호 입력", Type:=2)
입력값을 특정 셀에 저장
Range("A1").Value = Application.InputBox(...)
숫자 범위 제한
Do...Loop Until 점수 >= 0 And 점수 <= 100

🔥 VBA의 Application.InputBox를 활용하면 입력값을 더 정밀하게 제어할 수 있습니다! 🚀