엑셀(Excel) VBA - InputBox 함수를 이용해서 입력값 받기

엑셀(Excel)/VBA

엑셀(Excel) VBA - InputBox 함수를 이용해서 입력값 받기

 

환경: Microsoft Excel 2013

 

InputBox 는 사용자로부터 값을 입력 받을 수 있기 때문에 아주 다양한 용도로 사용할 수 있습니다. 그리고 Input 박스는 단순히 값을 입력 받는 것뿐만 아니라 입력값에 대해 유효성 체크도 가능합니다. 사용자를 실수를 줄일 수 있는 방편이죠.

 

문법은 다음과 같습니다. 각 인수별로 Input 박스를 구성하는 값들이 들어갑니다. 리턴받은 값은 true/false 중 하나이며 Input 박스에서 확인을 누르면 true, 취소를 누르면 false 입니다. 그리고 마지막에 Type 값은 입력 받는 데이터 형식을 지정할 수 있습니다. 형식에 맞지 않으면 에러 메시지를 출력하고 더 이상 진행이 안됩니다. 데이터 유효성 체크할 때 아주 유용합니다.

 

변수 = InputBox(Prompt, Title, Default, Left, Top, HelpFile, HelpContextID, Type)

 

l  Prompt : Input 박스의 입력란에 표시되는 제목을 말한다. 보통 입력 받을 내용에 대해 언급한다.

l  Title : Input 박스의 제목을 입력한다. 박스 상단 바에 글자가 들어간다.

l  Default : Input 박스가 뜰 때 입력박스안에 들어가는 기본값을 나타낸다.

l  Left : Input 박스가 화면에서 뜰 때 x 좌표값을 나타낸다.

l  Top : Input 박스가 화면에서 뜰 때 y 좌표값을 나타낸다.

l  Type : 입력 받을 데이터의 종류를 지정한다. type 에서 지정한 데이터가 입력되지 않으면 에러 메시지를 띄운다. type 의 상세내용은 아래 참조

 

Type 에 어떤 값이 들어가느냐에 따라 Input 에 받아 들일 수 있는 값이 정해 집니다. 만약 내가 숫자만 필요하다고 하면 Type:=1 이 되겠죠. 만약 여러 형태의 데이터를 모두 허용하고 싶다면 숫자를 더 해주면 됩니다. 그러니까 텍스트와 숫자 둘 다 받아들이고 싶다면 1+2 를 해서 3을 입력하면 됩니다.

 

l  0 : 수식 입력

l  1 : 숫자 입력

l  2 : 텍스트 입력

l  4 : True / False

l  8 : 셀 영역

l  16 : #N/A 같은 에러

l  64 : 배열

 

아래 소스는 Type 1 로 지정했기 때문에 숫자만 입력해야 합니다. 그리고 확인을 눌렀을 때만 로직을 진행할 수 있도록 If Response <> False Then 를 집어 넣었습니다. 취소를 누르면 False 가 리턴 되기 때문에 지나가겠죠.

 

Sub UsingInputPrint()

    Dim Response As Integer

    ' Run the Input Box.

    Response = Application.InputBox("숫자만입력하세요.", _

       "숫자입력", , 250, 75, "", , 1)

 

    ' 확인을 눌렀을 때 진행

    If Response <> False Then

       ' A1 에 입력한 값 표시

       Range("a1").Value = Response

    End If

End Sub

 

 

Posted by 녹두장군

댓글을 달아 주세요