Please Enable JavaScript!
Gon[ Enable JavaScript ]

엑셀(Excel) VBA - InputBox 를 통한 다양한 형태의 값 입력받기

엑셀(Excel)/VBA

엑셀(Excel) VBA - InputBox 를 통한 다양한 형태의 값 입력받기

 

환경 : Microsoft Excel 2010

 

일반적인 InputBox 는 단순하게 입력값이 String 으로 리턴됩니다. 이런 단순한 형태가 아닌 셀영역을 입력하고 반환형태를 Type 으로 지정해 받을 수가 있습니다.

 

InputBox 의 형태는 다음과 같다.

Application.InputBox(메시지내용,제목,기본값,가로위치,세로위치,Type)

 

여기서 Type 의 종류를 알아봅니다. 타입은 반환형태를 결정짓는 타입값이며 비트연산으로 분류 되어있어서 타입값을 더해서 넘겨도 됩니다. 그러니까 1+2 를 더해 3을 넘기면 1 2형태를 동시에 만족할수 있습니다.

 

l  0 : 수식

l  1 : 숫자

l  2 : 텍스트

l  4 : 논리값, True/False

l  8 : Range 와 같은 셀 참조

l  16 : #N/A 오류값

l  64 : 값의 배열

 

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

 

위의 소스를 실행하게 되면 영역을 입력받을 수 있는 InputBox 가 뜨게 됩니다. 값을 적용하기 원하는 영역을 선택합니다.

 

엑셀(Excel) VBA - InputBox 를 통한 다양한 형태의 값 입력받기

 

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

엑셀(Excel) VBA - InputBox 를 통한 다양한 형태의 값 입력받기

 

 

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

선택한 셀의 평균을 구하는 것입니다. 소스는 아래와 같으며 영역을 리턴받아 그 영역에 있는 값의 평균을 구해 메시지로 띄웠습니다.

 

Private Sub RangeAverage()

    Dim ReturnSel As Range

Set ReturnSel = Application.InputBox("영역 평균구하기", "범위선택", Type:=8)

    MsgBox "평균 : " & Application.WorksheetFunction.Average(ReturnSel)

End Sub

 

엑셀(Excel) VBA - InputBox 를 통한 다양한 형태의 값 입력받기

 

엑셀(Excel) VBA - InputBox 를 통한 다양한 형태의 값 입력받기

 

Posted by 녹두장군

댓글을 달아 주세요