ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 엑셀 VBA - Inputbox를 활용한 다양한 형태 값 입력하기
    Dung--[엑셀] 2023. 4. 4. 15:02

    엑셀 VBA - Inputbox를 활용한 다양한 형태 값 입력하기

     

    보통 inputbox는 단순하게 입력값이 string으로 리턴처리됩니다. 이러한 단조로운 형태가 아니라 셀영역을 입력하고 반환형태를 type로 지정하여 받으실 수 있습니다.

     

    inputbox의 형태는 아래와 같습니다.

    application.inputbox(메세지내용,제목,기본값,가로위치,세로위치,type)



    1. 여기에서 type의 종류에 대해서 알아보겠습니다. 타입은 반환형태를 결정짓는 타입값이고 비트연산으로 분류가 되어있기에 타입값을 더하여 넘기셔도 됩니다.  1+2를 더하여 3을 넘기면 1과2의 형태를 동시에 만족하실 수 있습니다.

    - 0 : 수식

    - 1 : 숫자

    - 2 : 텍스트

    - 4 : 논리값, true / false

    - 8 : range 와 같은 셀 참조

    - 16 : #N/A 오류값

    - 64 : 값의 배열

     

    2. Type의 값을 입력하기 위하여서 type:=1 처럼 인수지정방식을 사용합니다 아래에 샘플은 영역에 값을 적용하는 방법인데 type:=8 로 inputbox 를 셋팅한 것입니다.

     


    Private Sub RangeType()

        Dim ReturnSel As Range
       
        Set ReturnSel = Application.InputBox("원하는 영역에 값적용", "범위선택", Type:=8)
        ReturnSel.Select
        Selection.Value = "반환"
    End Sub

    3. 위 소스를 실행하시게 되면 영역을 입력받으실 수 있는 inputbox 가 나오게 됩니다. 값을 적용하기 원하는 영역을 선택합니다.

    활용 예시1

    4. 확인을 누르시게 되면 아래와 같이 선택하신 영역에 코드에서 작성한값 Selection.Value = "반환" 이 모든 셀에 들어가게 됩니다. application.inputbox 를 실행하고 returnsel 개체가 리턴을 받은 것은 영역이며 select 를 활용해서 모두 선택한 후 동일한 값을 넣은 것입니다.

    활용 예시2

    5. 다음은 위 내용을 좀더 확장하여 선택한 영역에 수식을 적용해 보겠습니다.

    선택하신 셀의 평균을 구하는 방식입니다. 소스는 아래처럼 영역을 리턴받아 그 영역에 있는 값의 평균을 구해 메세지로 나타냈습니다.

     


    Private Sub RangeAverage()

        Dim ReturnSel As Range
    Set ReturnSel = Application.InputBox("영역 평균구하기", "범위선택", Type:=8)
        MsgBox "평균 : " & Application.WorksheetFunction.Average(ReturnSel)
    End Sub

    활용 예시3
    활용 예시4

    댓글

Designed by Tistory.