엑셀(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 가 뜨게 됩니다. 값을 적용하기 원하는 영역을 선택합니다.
▼ 확인을 누르게 되면 아래와 같이 선택한 영역에 코드에서 작성한값 Selection.Value = "반환" 이 모든 셀에 들어가게 됩니다. Application.InputBox 를 실행하고 ReturnSel 개체가 리턴받은 것은 영역이며 Select 를 사용해서 모두 선택한후 동일한 값을 집어 넣은 것입니다.
▼ 다음은 위의 내용을 좀더 확장해 선택한 영역에 수식을 적용해 보도록 하겠습니다.
선택한 셀의 평균을 구하는 것입니다. 소스는 아래와 같으며 영역을 리턴받아 그 영역에 있는 값의 평균을 구해 메시지로 띄웠습니다.
Private Sub RangeAverage() Dim ReturnSel As Range Set ReturnSel = Application.InputBox("영역 평균구하기", "범위선택", Type:=8) MsgBox "평균 : " & Application.WorksheetFunction.Average(ReturnSel) End Sub |
'엑셀(Excel) > VBA' 카테고리의 다른 글
엑셀(Excel) VAB - For Each 문을 이용하여 컬렉션개체 반복처리하기 (2) | 2014.11.25 |
---|---|
엑셀(Excel) VBA - For 문을 이용하여 반복할 횟수지정하여 처리하기 (2) | 2014.11.25 |
엑셀(Excel) VBA - Select Case 문을 사용하여 다중조건 처리하기 (0) | 2014.11.24 |
엑셀(Excel) VBA - And 혹은 OR 을 사용하여 여러조건 체크하기 (1) | 2014.11.24 |
엑셀(Excel) VAB 문법 조건에 따라 세가지 이상을 처리하는 IF… ELSEIF (0) | 2014.11.23 |
엑셀(Excel) VBA - InputBox 를 통한 다양한 형태의 값 입력받기 (0) | 2014.11.22 |
댓글을 달아 주세요