본문 바로가기
VBA 라이브러리

InputBox 함수

2023. 7. 15.

대화 상자에 프롬프트를 표시하고, 사용자가 텍스트를 입력하거나 단추를 클릭할 때까지 기다렸다가 텍스트 상자의 내용이 들어 있는 String을 반환합니다.

구문은 다음과 같습니다.

Syntax

InputBox(prompt, [ title ], [ default ], [ xpos ], [ ypos ], [ helpfile, context ])

prompt

prompt : 대화상자에 표시되는 메시지입니다.필수이므로 생략할 수 없습니다.

Sub GetFavoriteFruit()

    Dim fruit As String
    
    fruit = InputBox("좋아하는 과일을 입력하세요:")
    MsgBox "당신이 좋아하는 과일은 " & fruit & "입니다!"
    
End Sub

title

title : 제목 표시줄에 표시되는 메시지입니다.

Sub GetAge()

    Dim age As String
    
    age = InputBox("나이를 입력하세요:", "나이 입력")
    MsgBox "당신의 나이는 " & age & "세입니다!"
    
End Sub

default

default : 다른 입력이 제공되지 않은 경우 텍스트 상자에 기본으로 표시되는 기본값입니다.생략한 경우에는 위 예제와 같이 비어있는 상태로 표시됩니다.

Sub GetName()

    Dim name As String
    
    name = InputBox("이름을 입력하세요:", Default:="John Doe")
    MsgBox "안녕하세요, " & name & "님!"
    
End Sub

xpos : 화면 왼쪽 가장자리에서 대화 상자의 왼쪽 가장자리까지의 수평 거리를 비트 단위로 지정하는 숫자 표현식입니다. xpos를 생략하면 대화 상자가 가로 중앙에 배치됩니다.

ypos : 위쪽에서 대화 상자의 위쪽 가장자리까지의 세로 거리(트윕)를 지정하는 숫자 식입니다. ypos를 생략하면 대화 상자가 화면 아래쪽의 약 1/3 지점에 세로로 배치됩니다.

Sub MoveInputBox()

    Dim name As String
    Dim xPos As Long
    Dim yPos As Long
    
    ' xpos와 ypos 값을 변수에 할당
    xPos = Application.Left + (Application.Width / 2)
    yPos = Application.Top + 100
    
    ' InputBox 창의 위치를 조정하여 값을 입력 받음
    name = InputBox("이름을 입력하세요:", , , xPos, yPos)
    
    MsgBox "입력된 이름: " & name
    
End Sub

Sub MoveInputBox()

    Dim name As String
    Dim xPos As Long
    Dim yPos As Long
    
    ' xpos와 ypos 값을 변수에 할당
    xPos = 10000
    yPos = Application.Top + 100
    
    ' InputBox 창의 위치를 조정하여 값을 입력 받음
    name = InputBox("이름을 입력하세요:", , , xPos, yPos)
    
    MsgBox "입력된 이름: " & name
    
End Sub

Sub MoveInputBox()

    Dim name As String
    Dim xPos As Long
    Dim yPos As Long
    
    ' xpos와 ypos 값을 변수에 할당
    xPos = 10000
    yPos = 5000
    
    ' InputBox 창의 위치를 조정하여 값을 입력 받음
    name = InputBox("이름을 입력하세요:", , , xPos, yPos)
    
    MsgBox "입력된 이름: " & name
    
End Sub

helpfile : 대화 상자에 상황에 맞는 도움말을 제공하는 데 사용할 도움말 파일을 식별하는 String 식입니다. helpfile이 제공되는 경우 컨텍스트도 제공해야 합니다.

context : 도움말 작성자가 해당 도움말 항목에 할당한 도움말 컨텍스트 번호인 숫자 식입니다. 컨텍스트가 제공되면 helpfile도 제공해야 합니다.

다음은 예제 코드입니다.

Example

Sub FindMaxNumber()
    Dim inputCount As Integer
    Dim number As Variant
    Dim maxNumber As Double
    Dim i As Integer
    
    inputCount = InputBox("입력할 숫자의 개수를 입력하세요:")
    
    ' 입력받은 숫자의 개수만큼 반복하여 숫자 입력 받음
    For i = 1 To inputCount
        number = InputBox("숫자를 입력하세요 (입력 " & i & "/" & inputCount & "):")
        
        ' 입력된 숫자가 유효한지 확인하고 최대값 갱신
        If IsNumeric(number) Then
            If CDbl(number) > maxNumber Then
                maxNumber = CDbl(number)
            End If
        Else
            MsgBox "올바른 숫자를 입력해주세요."
            Exit Sub
        End If
    Next i
    
    MsgBox "입력한 숫자 중 최대값은 " & maxNumber & "입니다."
    
End Sub

Sub GreetUser()

    Dim name As String
    Dim age As Integer
    
    name = InputBox("이름을 입력하세요:", "환영합니다!", "John Doe")
    age = InputBox("나이를 입력하세요:", "나이 입력", "30")
    
    MsgBox "안녕하세요, " & name & "님!" & vbCrLf & _
        "당신의 나이는 " & age & "입니다."
        
End Sub

Sub InputBox_GenderExample()

    ' 변수 선언
    Dim gender As String
    Dim message As String

    ' 성별 입력 받기
    gender = InputBox("당신의 성별은 무엇인가요?", "성별 입력")

    ' 결과에 따라 메시지 출력
    If gender = "남성" Then
        message = "당신은 남성입니다."
    ElseIf gender = "여성" Then
        message = "당신은 여성입니다."
    Else
        message = "잘못된 입력입니다."
    End If

    ' 메시지 출력
    MsgBox message

End Sub

Sub InputBox_MathExample()

    ' 변수 선언
    Dim num1 As Double
    Dim num2 As Double
    Dim operation As String
    Dim result As Double

    ' 숫자 및 연산자 입력 받기
    num1 = InputBox("첫 번째 숫자를 입력하세요.", "숫자 입력")
    num2 = InputBox("두 번째 숫자를 입력하세요.", "숫자 입력")
    operation = InputBox("계산할 연산자를 입력하세요. (+, -, *, /)", "연산 입력")

    ' 입력값 계산
    Select Case operation
        Case "+"
            result = num1 + num2
        Case "-"
            result = num1 - num2
        Case "*"
            result = num1 * num2
        Case "/"
            ' 0으로 나누기 에러 발생 처리
            If num2 = 0 Then
                MsgBox "0으로 나눌 수 없습니다."
                Exit Sub
            Else
                result = num1 / num2
            End If
        Case Else
            MsgBox "잘못된 연산자입니다."
            Exit Sub
    End Select

    ' 계산 결과 출력
    MsgBox "계산 결과: " & result

End Sub

Sub InputBox_RectangleExample()

    ' 변수 선언
    Dim width As Integer
    Dim height As Integer

    ' 폭 및 높이 입력 받기
    width = InputBox("사각형의 폭을 입력하세요.", "사각형 그리기")
    height = InputBox("사각형의 높이를 입력하세요.", "사각형 그리기")

    ' 사각형 그리기
    Range("A1").Select
    ActiveSheet.Shapes.AddShape(msoShapeRectangle, Selection.Left, Selection.Top, width, height).Select

End Sub

'VBA 라이브러리' 카테고리의 다른 글

StrConv 함수  (0) 2023.07.22
StrComp 함수  (0) 2023.07.22
ColorConstants  (0) 2023.07.18
IIf 함수  (0) 2023.07.15
MsgBox 함수  (0) 2023.07.14