VBA InputBox – 사용자가 입력한 값 가져오기
In this Article
이 튜토리얼에서는 VBA 입력상자(InputBox)를 사용하여 사용자가 입력한 값을 가져오는 방법을 보여드립니다.
VBA 입력 상자를 사용하면 사용자에게 정보를 입력하라는 메시지를 표시할 수 있습니다. 입력된 정보는 VBA 코드 또는 Excel 워크시트에서 사용할 수 있습니다.
VBA 변수로 선언한 입력상자
VBA 코드에서 변수를 선언하면 입력 상자에 입력한 정보를 저장할 수 있습니다. 그런 다음 코드에서 이 변수를 사용할 수 있습니다.
입력 상자에서 반환하려는 정보 유형에 따라 텍스트(문자열 또는 Variant 변수)를 반환하거나 숫자(integer, long, double 또는 single variable)를 반환하도록 특정 유형의 변수를 선언할 수 있습니다.
문자열 변수로 선언한 입력상자
다음은 데이터를 문자열 변수로 반환하는 입력상자를 만드는 방법입니다.
Dim strInput as String
strInput = InputBox("입력상자입니다", "제목", "여기에 텍스트를 입력하세요")
우선, 변수를 선언한 것을 주목하세요. 이 변수에는 사용자가 입력한 값이 할당됩니다. 입력 상자에 텍스트 문자열(영숫자 포함)을 허용하기 위해 변수 유형 String을 사용했습니다.
숫자 변수로 선언한 입력상자
숫자 변수를 선언하는 경우 입력 상자에 숫자만 입력해야 합니다.
Dim iInput As Integer
iInput = InputBox("숫자를 입력해 주세요", "인보이스 번호 생성", 1)
우선 숫자 변수를 정수 변수(Integer)로 선언하였습니다. 그런 다음 입력 상자에 기본값 1을 입력하였습니다.
숫자 대신 문자열을 입력한 다음 확인을 클릭하면 숫자 변수가 문자열을 허용하지 않으므로 유형 불일치 오류가 발생합니다.
사용자가 입력한 값 가져오기
다음은 입력 상자의 기능 중 가장 많이 사용되는 기능에 대한 예제입니다.
다음 코드는 세 가지 작업을 수행합니다:
1. InputBox를 사용하여 입력을 요청하고 변수에 할당합니다.
2. 입력을 확인하고, 그렇지 않으면 하위 프로시저를 종료합니다.
3. 메시지 박스에 입력을 반환합니다.
Public Sub MyInputBox()
Dim MyInput As String
MyInput = InputBox("입력상자입니다", "제목", "여기에 텍스트를 입력하세요")
If MyInput = "여기에 텍스트를 입력하세요" Or MyInput = "" Then
Exit Sub
End If
MsgBox "입력상제에 입력한 값 : " & MyInput
End Sub
입력상자에 입력한 값을 Excel 시트에 반환하기
입력 상자에 입력한 값을 Excel 시트의 특정 셀로 반환할 수 있습니다.
Range("P1") = InputBox("이름을 입력해 주세요", "이름 입력", "여기에 이름을 입력하세요")
변수를 사용하여 입력 데이터를 Excel 시트에 반환할 수도 있습니다.
Sub EnterNumber()
On Error Resume Next
Dim dblAmount As Double
dblAmount = InputBox("필요한 수량을 입력해 주세요", "수량 입력")
If dblAmount <> 0 Then
Range("A1") = dblAmount
Else
MsgBox "수량을 입력 후 확인 버튼을 눌러주세요!"
End If
End Sub
위 예제에서는 숫자를 입력해야 합니다. 숫자를 입력하면 dblAmount 변수에 입력한 수량이 저장되고 A1 셀에 변수에 저장된 값이 입력됩니다. 숫자를 입력하지 않으면 “수량을 입력 후 확인 버튼을 눌러주세요!” 라는 메시지 박스가 표시되고 A1 셀에 아무 것도 입력되지 않습니다.
Access VBA에서 VBA 입력 상자 사용하기
Access VBA 입력 상자는 Excel에서와 마찬가지로 정확히 동일한 방식으로 작동합니다. 메시지 상자 형태로 사용자 입력을 반환합니다.
사용자 입력을 데이터베이스에 반환하려면 Excel에서 사용되는 범위 개체가 아닌 Recordset 객체를 사용해야 합니다.
Sub EnterInvoiceNumber()
Dim dbs As Database
Dim rst As Recordset
Set dbs = CurrentDb
Set rst = dbs.OpenRecordset("tblMatters", dbOpenDynaset)
With rst
.AddNew
!InvNo = InputBox("인보이스 번호를 입력하세요", "인보이스 번호 생성", 1)
.Update
End With
rst.Close
Set rst = Nothing
Set dbs = Nothing
End Sub
간편한 VBA 코딩
온라인에서 VBA 코드를 더 이상 검색하지 않아도 됩니다. 초보자도 최소한의 코딩 지식으로 프로시저를 처음부터 코딩할 수 있습니다. 코드를 빠르게 작성하고 싶으시다면 모든 사용자를 위한 VBA 코드 작성기인 AutoMacro에 대해 자세히 알아보세요!