본문으로 바로가기

[VBA] Inputbox

category Tip & Tech/Excel (MS office) 2017. 9. 28. 15:13
728x90
728x90

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


  • Prompt : 입력란에 표시되는 제목입니다. 입력받을 내용을 설명합니다.
  • Title : 박스 상단 제목입니다.
  • Default : 입력란에 기본값을 정의합니다.
  • Left : InputBox가 표시되는 가로 좌표값입니다.
  • Top : InputBox가 표시되는 세로 좌표값입니다.
  • Type : 입력 받을 데이터의 종류를 지정합니다. Type 에서 지정한 데이터가 입력되지 않으면 에러 메시지를 표시합니다.(Type정의 참조)


Type 정의

  • 0 : 수식 입력
  • 1 : 숫자 입력
  • 2 : 텍스트 입력
  • 4 : True / False
  • 8 : 셀 영역
  • 16 : #N/A 같은 에러
  • 64 : 배열


대부분의 블로그나 소개자료에서 InputBox에 Type을 정의할수 있다고 되어 있습니다.
현재 MS오피스 2010의 VBA7.0에서는 Type을 지정할 수 없습니다.
책으로 공부하는 자료가 아니라서 명확하게 찾아볼수 없네요. (2017/9/28)


과거에 작성했던 코드를 확인했는데, VBA에서 기본으로 사용가능한 InputBox에서는 Type 정의가 되지 않습니다.
Application.InputBox에서는 사용이 가능합니다.
Application을 붙이고 안붙이고에 대해서는 좀더 알아보고 다뤄봐야겠네요.


About my code


*월 정보만 입력하고 싶은 경우


Dim Month_ as Variant

'전문가 수준이 아니라서 편의상 Variant를 즐겨사용합니다.


Reinbox:

    Month_ = InputBox("기준월을 입력합니다. [1~12]", "입력")

    If Month_ < 1 Or Month_ > 12 Then

'입력월이 1~12를 벗어나면 MsgBox를 표시하고 입력을 반복합니다.

        MsgBox "입력월이 맞지 않습니다. [1~12]"

        GoTo Reinp

    Else

'정수가 아닌경우를 고려하여 편의상 반올림합니다.

        Month_ = Round(Month_, 0)

        MsgBox "기분월은 " & Month_ & "월입니다."

    End If


제 경우에는 Variant로 입력을 받고 필터링하는 방법을 선택했는데요. GoTo는 좋은 방법이 아니지만, 실력이 부족하네요.

보다 깔끔한 방법이 있을것 같습니다. 고수님들이 알려주시면 좋겠네요.


728x90
반응형

'Tip & Tech > Excel (MS office)' 카테고리의 다른 글

[설정] 엑셀 2013 속도향상  (2) 2019.03.19
[엑셀VBA] 문자열  (0) 2017.09.29
[VBA] 변수 활용  (0) 2017.09.28
[VBA] Workbooks  (0) 2017.07.19
[VBA] WorksheetFunction  (0) 2017.06.28