엑셀(Excel) VBA - 사용자정의 폼의 타이틀바에서 X 버튼 제어하기 |
환경 : Microsoft Excel 2010 |
사용자정의 폼을 개발하다 보시면 폼상단에 X 버튼이 있는데 그걸 클릭하게 되면 아무 통제없이 창이 닫히게 되고 의도치 않은 일들이 벌어지게 됩니다. 버튼을 없앨수 있는지는 아직 모르겠고 버튼을 클릭했을 때 기능이 동작하지 않도록 구현을 하였습니다.
▼ 폼에 보시면 상단에 X 버튼이 있습니다. 이 버튼을 클릭했을 때 이벤트를 가로채지 위해서 폼 소스로 갑니다.
▼ 소스에서 상단에 개체를 선택하는 콤보박스로 갑니다. 왼쪽 콤보에서 UserForm 을 선택하고 오른쪽 콤보에서 QueryClose 를 선택해서 함수뼈대를 만듭니다.
▼ 만들어진 뼈대는 아래와 같습니다. 여기에서 두 번째로 넘어오는 CloseMode 값으로 폼에서 종료 이벤트가 발생했는지 판단하게 됩니다.
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) End Sub |
▼ CloseMode 의 상수값은 다음과 같습니다. 이 중 윈도우 OS 가 강제로 엑셀을 종료시키는 경우와 폼에서 닫기 이벤트가 발생한 것이 있습니다. 우리가 찾아야 하는 이벤트는 vbFormControlMenu 입니다.
l vbFormControlMenu : 폼에서 닫기 명령이 호출되었을 때
l vbFormCode : 코드에서 Unload 명령문이 호출되었을 때
l vbAppWindows : 윈도우가 종료되어 엑셀이 종료될대
l vbAppTaskManager : 윈도우 작업관리자가 엑셀을 종료했을 때
▼ 아래 소스는 vbFormControlMenu 일때 메시지를 호출해주고 Cancel = True 로 셋팅해줍니다. False 로 하게 되면 폼화면이 종료 됩니다.
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) If CloseMode = vbFormControlMenu Then MsgBox "x 버튼은 동작하지 않습니다." Cancel = True End If End Sub |
▼ 아래 그림과 같이 클릭했을 때 종료되지 않게 하면 되면 동작하지 않는 것 처럼 꾸밀수가 있는 것이죠.
'엑셀(Excel) > VBA' 카테고리의 다른 글
엑셀(Excel) VBA - 목록상자에서 다중선택하여 엑셀에 값 추가하기 (7) | 2014.12.15 |
---|---|
엑셀(Excel) VBA - 폼에 배치한 컨트롤 정렬하기 (0) | 2014.12.12 |
엑셀(Excel) VBA - 목록상자 컨트롤 이용하여 목록 조회, 선택하기 (1) | 2014.12.12 |
엑셀(Excel) VBA - 콤보상자에 ID 를 추가하여 선택할수 있도록 하기 (0) | 2014.12.08 |
엑셀(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 |