CommandBar|Range|ShowPopUp|Type|Workbook_SheetSelectionChange|
|Reset|Worksheet_Deactivate|Workbook_Deactivate|
|ActionControl.ListIndex|ActionControl.List|AutoFilterMode|
|Sort|AutoFilter|LargeScroll|Parameter|CommandBar|
이번에는 PopUp타입명령줄을 만들어서 활용해보자
PopUp명령줄은 오른쪽마우스를 크릭하면 나타나는
단축메뉴줄을 말한다
오른쪽마우스로 크릭하면 나타나는 단축메뉴들
셀을 오른쪽마우스로 크릭하면 셀의 작업을 위한 단축메뉴가
제공되고 있다
CommandBars("Cell")
이 셀을 크릭하면 나타나는 팝업메뉴(단축메뉴)인것이다
우선 엑셀에서 제공하는 PopUp타입메뉴(단축메뉴)를 모두 아래와 같다
Query and Pivot | PivotChart Menu | Workbook tabs |
Cell | Column | Row |
Ply | XLM Cell | Document |
Desktop | Nondefault Drag and Drop | AutoFill |
Button | Dialog | Series |
Plot Area | Floor and Walls | Trendline |
Chart | Format Data Series | Format Axis |
Format Legend Entry | Formula Bar | PivotTable Context Menu |
Query | Query Layout | AutoCalculate |
Object/Plot | Title Bar (Charting) | Layout |
Pivot Chart Popup | Phonetic Information | Shapes |
Inactive Chart | Excel Control | Curve |
Curve Node | Curve Segment | Pictures Context Menu |
OLE Object | ActiveX Control | WordArt Context Menu |
Rotate Mode | Connector | Script Anchor Popup |
Auto Sum | Paste Special Dropdown | Find Format |
Replace Format | List Range Popup | List Range Layout Popup |
XML Range Popup | List Range Layout Popup | Canvas Popup |
Organization Chart Popup | Diagram | Layout |
Select | Add Command | Built-in Menus |
아래의 화일에서
엑셀이 제공하는 모든 단축메뉴를 리스팅하고
어떻게 생긴 단축메뉴가 어떤 이름의 명령줄인지 쉽게 살펴보도록 한다
또한,시트에 SelectionChange이벤트프로시져가 없더라도
WorkBook오브젝트의 SheetSelectionChange이벤트프로시져를 활용하여
시트가 삭제되고 다시 만들어져도 해당 시트명을 읽어서 이벤트를
처리하는 것을 보도록 하자
List All PopUp Menu
단축메뉴의 재구성
위의 빨강색 Cell 은 워크시트의 셀을 오른쪽마우스를 크릭하면
나타 나는 단축메뉴(팝업메뉴)의 이름이다
With CommandBars("Cell")
...
...
...
End With
와 같이 하면 해당 단축메뉴를 원하는대로 재구성할수 있는것이다
셀을 오른쪽마우스로 크릭하면 나타나는 CommandBars("Cell")단축메뉴를
아래의 기능으로 재구성해보자 /그림 보기 [Show]
위의 그림에서 보듯이
- SelectionChange이벤트프로시져를 이용하여 테이블범위와 일반범위의 인식처리
- 기존의 단축메뉴의 콘트롤을 모두 없애고 새로운 콘트롤로 채워넣고
- 테이블의 열을 선택할때마다 콤보콘트롤에 해당열에 해당하는 리스트채우고
- 콤보콘트롤의 값을 선택하면 해당 열기준으로 휠터링수행하고
- 정렬콘트롤은 오름차,내림차를 Parameter속성으로 읽어서 처리하고
- 다른 통합문서나 다른 시트로 이동할때 명령줄의 원상복구
마우스만 딸깍거리면서 작업을 하고 싶을때 좋은 도구가 될것이다
Make PopUp Menu
명령줄을 만들어서 사용할때 지켜야 할점
명령줄,CommandBar오브젝트는 Application레벨의 오브젝트들이다
그래서 변경된 명령줄 혹은 새로 만든 사용자정의 명령줄들은
제거하지 않으면 다른 통합문서로 이동되어도 나타난다
예를 들어서 위에서와 같이 CommandBars("Cell")를 재구성하여 사용할때
공교롭게도 테이블범위를 선택한 상태(새로 구성된 메뉴상태)일때
다른 관계없는 시트로 이동하거나
다른 통합문서로 이동할때 위의 메뉴가 그대로 나타나게 된다
다른 시트나 통합문서에는 전혀 관계없는 명령줄이 나타나면
사용자들은 무척 황당하게 만든다
명령줄을 만들어서 사용하면
항상 뒷처리를 잘해야 한다
CommandBars("Cell").Reset
하여 사용자가 당황하지 않게 하여야 한다
이때 해당 시트를 떠날때,해당시트가 비활성화될때 발생하는 이벤트를
활용하여 Reset시키기도 하고
Private Sub Worksheet_Deactivate()
Application.CommandBars("Cell").Reset
End Sub
통합문서를 떠나서 다른 통합문서로 이동할때 통합문서에서 발생하는
이벤트프로시져를 찾아서 Reset시켜주면 된다
Private Sub Workbook_Deactivate()
Application.CommandBars("Cell").Reset
End Sub