본문 바로가기
  • 반가워요 : )
엑셀

Vba 상호작용, Input box

by 교육의 기울기 2024. 8. 12.
반응형

vba InputBox

inputbox는 더 자세한 입력을 사용자로부터 받을수있는 vba 기능입니다. msgbox는 제한적인 값을 받을수있지만, inputbox는 더 세세한 입력을 받을수있습니다. 단순한 예제 부터보시죠.

 

InputBox 함수의 기본적인 사용법:

Dim userInput As String
userInput = InputBox("이름을 입력하세요.")
MsgBox "안녕하세요, " & userInput & "님!"
 
 

위 코드를 실행하면 "이름을 입력하세요."라는 메시지와 함께 입력 상자가 나타나고, 사용자가 입력한 값이 userInput 변수에 저장됩니다. 이후 MsgBox 함수를 통해 "안녕하세요, [사용자 이름]님!"과 같은 메시지를 출력합니다.

 

InputBox 함수의 주요 특징:

  • 사용자 입력: 사용자로부터 문자열 형태의 데이터를 입력받을 수 있습니다.
  • 입력 상자: 사용자 입력을 위한 간단한 대화 상자를 제공합니다.
  • 다양한 옵션: 제목, 기본값 등을 설정하여 입력 상자를 커스터마이징할 수 있습니다.

InputBox 함수의 활용 예시:

  • 사용자 정보 입력: 이름, 나이, 아이디 등 사용자 정보를 입력받아 프로그램에 활용합니다.
  • 파일 이름 입력: 저장할 파일의 이름을 입력받습니다.
  • 데이터 검색: 검색어를 입력받아 데이터를 검색합니다.

InputBox 함수의 주의 사항:

  • 데이터 형식: InputBox 함수는 항상 문자열을 반환합니다. 숫자나 날짜 등 다른 데이터 형식으로 사용하려면 변환이 필요합니다. (예: CInt 함수를 사용하여 문자열을 숫자로 변환)
  • 입력 유효성 검사: 사용자가 잘못된 값을 입력하는 경우를 대비하여 입력값의 유효성을 검사하는 코드를 추가하는 것이 좋습니다.

Excel InputBox

vba라이브러리의 InputBox가 아닌, 엑셀 라이브러리에도 InputBox가 존재합니다. 이는 비슷해보이지만, 더 다양한 기능을 지원합니다.  가장 대표적인 기능으로는, 문자열타입이외에도 데이터를 입력할수있다는 것입니다. 아래 예시를 살펴보세요.

 

InputBox를 통해 받을 값을 특정셀에 계속 더하는 코드 , type : 1

Sub IncreaseValue()
    Dim increment As Double
    increment = Application.InputBox("Enter a number to increase the value:", Type:=1)
    
    If increment <> 0 Then
        Range("g1").Value = Range("g1").Value + increment
    Else
        MsgBox "No number was entered."
    End If
End Sub

 

InputBox를 통해 이름을 받는 코드 , type : 2

Sub GetUserName()
    Dim userName As String
    userName = Application.InputBox("Enter your name:", Type:=2)
    
    If userName <> "" Then
        Range("g1").Value = userName
    Else
        MsgBox "You did not enter a name."
    End If
End Sub

InputBox로 불리안 데이터를 받는 코드 , type : 4

Sub ConfirmAction()
    Dim response As Boolean
    response = Application.InputBox("Do you want to continue? (Yes=1, No=0)", Type:=4)
    
    If response = True Then
        MsgBox "You chose to continue."
    Else
        MsgBox "You chose to stop."
    End If
End Sub

Inputbox로 Range 객체 데이터를 받는 코드, type : 8

Sub HighlightCells()
    Dim selectedRange As Range
    Set selectedRange = Application.InputBox("Select a range to highlight:", Type:=8)
    
    If Not selectedRange Is Nothing Then
        selectedRange.Interior.Color = RGB(255, 255, 0) ' 노란색으로 색칠
    Else
        MsgBox "No range was selected."
    End If
End Sub


 

위 코드들을 보시면 전부 데이터를 받는 코드들인데요. 이때 다른것은, type입니다. 저 type이라는 인수에 들어가는 숫자 코드에 따라 입력되는 데이터 타입이 달라집니다. 

 

기본 vba 라이브러리의 InputBox는 String으로만 입력되는것과는 달리, Excel 라이브러리의 InputBox는 굉장히 유동적이라고 할수있습니다. 

 

해당 Code를 알고싶으시다면 다음 링크에서 확인해보세요.

 

 

Application.InputBox method (Excel)

Office VBA reference topic

learn.microsoft.com

 

만약 데이터를 잘못 입력하면 알아서 이를 판단해줍니다. 

숫자를 입력해야하는데, 문자열을 입력했는데, 엑셀이 이를 알아서 판단해준다.

 

 

즉 Excel 라이브러리의 InputBox가 좋은 점은 다음과 같이 정리됩니다. 

 

  1. 문자열 이외의 데이터를 입력할수있다.
  2. 다른 데이터 타입을 입력할경우, 엑셀이 이를 막아준다. 
  3. 범위 객체를 선택할수있다. 

 

반응형

댓글