-
엑셀 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 Sub3. 위 소스를 실행하시게 되면 영역을 입력받으실 수 있는 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 'Dung--[엑셀]' 카테고리의 다른 글
엑셀 VBA Clear, ClearContents, ClearFormats 함수에 활용법 (0) 2023.04.04 엑셀 VBA Special cells 속성을 활용해 조건에 맞는 셀 선택 (0) 2023.04.04 엑셀 수식 쉽게 자동으로 계산되는 방법 설명 (0) 2023.04.03 엑셀 수식 및 서식 복사 단축키 간단 정리 (0) 2023.04.03 엑셀 한 페이지안에 인쇄하기 방법 (0) 2023.04.03