엑셀(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) VBA - 사용자 정의 폼으로 로그인 기능 만들기 3부 (6) | 2014.12.07 |
---|---|
엑셀(Excel) VBA - 사용자 정의 폼으로 로그인 기능 만들기 2부 (1) | 2014.12.06 |
엑셀(Excel) VBA - 사용자 정의 폼으로 로그인 기능 만들기 1부 (0) | 2014.12.06 |
엑셀(Excel) VBA - PrintPreview, PrintOut 함수로 인쇄미리보기, 인쇄하기 실행 (0) | 2014.12.03 |
엑셀(Excel) VBA - Union, Intersect 함수를 이용해서 영역의 합집합,교집합 구하기 (0) | 2014.12.02 |
엑셀(Excel) VBA - Comments 속성을 사용해서 메모추가와 서식지정하기 (0) | 2014.12.01 |
엑셀(Excel) VBA - Clear, ClearContents, ClearFormats 함수에 대한 사용법 (0) | 2014.11.30 |
엑셀(Excel) VBA - SpecialCells 속성을 이용해 조건에 맞는 셀 선택하기 (0) | 2014.11.29 |