엑셀 VBA 영역을 입력받는 RefEdit 컨트롤 사용하는 방법 |
환경: Microsoft Excel 2013 |
엑셀에서 함수의 인수나 에디터 박스에 셀 영역을 입력 받을 수 있는 것들이 있습니다. 만약 사용자가 직접 만든 UserForm 에 셀 영역을 입력 받는 에디터 박스를 만들고 싶다면 어떤 컨트롤을 사용해야 할까요? 도구 상자에는 RefEdit 라는 컨트롤이 있습니다. 이 컨트롤은 엑셀에서 함수의 인수로 영역을 지정할 때 보았던 것과 동일한 기능을 합니다.
▼ 영역 지정 컨트롤은 그림과 같습니다. 마우스로 영역을 드래그 하면 자동으로 영역을 가리키는 식이 만들어 집니다. 이런 기능을 하는 컨트롤이 RefEdit 입니다.
▼ VBA 에디터에서 폼을 추가합니다. 그리고 도구 상자 제일 아래쪽에 보시면 RefEdit 라는 컨트롤이 있습니다. 그 컨트롤을 폼에 추가해 줍니다.
▼ 이번에 만든 폼은 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 에 영역을 지정합니다. 그럼 영역의 절대 주소 값이 들어가게 됩니다. 그리고 확인 버튼을 눌러 함수를 실행합니다. 함수 안에는 지정한 영역에 글꼴 색을 변경하는 소스가 있습니다.
▼ 폼에서 확인 버튼을 누른 결과는 다음과 같습니다. 선택한 영역의 폰트 색상이 변경되었습니다.
댓글을 달아 주세요