엑셀에서 함수의 인수나 에디터 박스에 셀 영역을 입력 받을 수 있는 것들이 있습니다. 만약 사용자가 직접 만든 UserForm 에 셀 영역을 입력 받는 에디터 박스를 만들고 싶다면 어떤 컨트롤을 사용해야 할까요? 도구 상자에는 RefEdit 라는 컨트롤이 있습니다. 이 컨트롤은 엑셀에서 함수의 인수로 영역을 지정할 때 보았던 것과 동일한 기능을 합니다.
▼ 영역 지정 컨트롤은 그림과 같습니다. 마우스로 영역을 드래그 하면 자동으로 영역을 가리키는 식이 만들어 집니다. 이런 기능을 하는 컨트롤이 RefEdit 입니다.
▼ VBA 에디터에서 폼을 추가합니다. 그리고 도구 상자 제일 아래쪽에 보시면 RefEdit 라는 컨트롤이 있습니다. 그 컨트롤을 폼에 추가해 줍니다.
※ 아래는 참고하면 좋을 만한 글들의 링크를 모아둔 것입니다. ※ ▶ 엑셀 VBA 매크로 디버깅, 디버그 코드 분석하기 ▶ 엑셀 VBA 반복문 For Next 문 사용하기 ▶ 엑셀 VBA Function 와 Sub 프로시저의 차이점과 사용법 알아 보기 ▶ 엑셀 VBA 통합 문서 문서가 열리는 순간 기능 구현하기 ▶ 엑셀 VBA 각종 함수 사용법과 샘플 소스 쉽게 얻는 방법 |
▼ 이번에 만든 폼은 RefEdit 로 영역을 입력 받아 [확인] 버튼을 누르면 색상을 변경하는 기능을 구현할 것입니다. [취소] 버튼은 창을 닫습니다.
▼ 다음은 확인을 눌렀을 때 이벤트 내용입니다. RefEdit 컨트롤에 입력된 값을 가져와서 영역 개체로 변환하기 위해 Range() 함수를 사용하였습니다. 그리고 Range 개체에 담긴 영역을 Font.Color 속성으로 폰트 색깔을 변경합니다.
Private Sub CommandButton1_Click() Dim addr As String, rng, cell As Range, min As Double addr = RefEdit1.Value Set rng = Range(addr) For Each cell In rng cell.Font.Color = vbRed Next cell End Sub |
▼ 다음은 취소를 눌렀을 때 이벤트 내용입니다. Unload 함수를 사용해서 창을 닫습니다. Me 는 현재 떠 있는 Form 개체를 가리킵니다.
Private Sub CommandButton2_Click() Unload Me End Sub |
▼ 마지막으로 위에서 만든 폼을 띄우는 버튼을 만들어 보겠습니다. 시트에 버튼을 하나 추가하고 Show 함수를 이용합니다.
▼ 폼을 실행하고 RefEdit 에 영역을 지정합니다. 그럼 영역의 절대 주소 값이 들어가게 됩니다. 그리고 확인 버튼을 눌러 함수를 실행합니다. 함수 안에는 지정한 영역에 글꼴 색을 변경하는 소스가 있습니다.
▼ 폼에서 확인 버튼을 누른 결과는 다음과 같습니다. 선택한 영역의 폰트 색상이 변경되었습니다.
※ 아래는 참고하면 좋을 만한 글들의 링크를 모아둔 것입니다. ※ ▶ 엑셀 VBA 매크로 디버깅, 디버그 코드 분석하기 ▶ 엑셀 VBA 반복문 For Next 문 사용하기 ▶ 엑셀 VBA Function 와 Sub 프로시저의 차이점과 사용법 알아 보기 ▶ 엑셀 VBA 통합 문서 문서가 열리는 순간 기능 구현하기 ▶ 엑셀 VBA 각종 함수 사용법과 샘플 소스 쉽게 얻는 방법 |
'엑셀(Excel) > VBA' 카테고리의 다른 글
엑셀 VBA 메모의 모양을 직사각형, 풍선, 다이어몬드 형태 만들기 (0) | 2024.12.07 |
---|---|
엑셀 VBA 매크로 소스 주석 Comments 넣는 방법 (2) | 2024.11.23 |
엑셀 Excel VBA 개발을 위한 개발 도구 탭 추가하기 (1) | 2024.11.23 |
엑셀 VBA 영어 첫 글자만 대문자로 변경하는 방법 (2) | 2024.11.20 |
엑셀 VBA 데이터 입력하는 텍스트 박스(Text Box) 사용하는 방법 (4) | 2024.11.02 |
엑셀 VBA 함수 Now 현재 날짜 및 시간 반환하기 (1) | 2024.11.02 |
엑셀 VBA 셀을 병합하는 Merge 함수 사용하기 (1) | 2024.10.31 |
엑셀 VBA 작은 따옴표, apostrophe 일괄적으로 삭제하는 방법 (1) | 2024.10.25 |