Skip Navigation Links.
Expand VBAVBA
엑셀프로그래밍이 필요한 이유
Expand ExcelExcel
Expand External LibraryExternal Library
Expand SolutionSolution
Expand EssayEssay

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 PivotPivotChart MenuWorkbook tabs
CellColumnRow
PlyXLM CellDocument
DesktopNondefault Drag and DropAutoFill
ButtonDialogSeries
Plot AreaFloor and WallsTrendline
ChartFormat Data SeriesFormat Axis
Format Legend EntryFormula BarPivotTable Context Menu
QueryQuery LayoutAutoCalculate
Object/PlotTitle Bar (Charting)Layout
Pivot Chart PopupPhonetic InformationShapes
Inactive ChartExcel ControlCurve
Curve NodeCurve SegmentPictures Context Menu
OLE ObjectActiveX ControlWordArt Context Menu
Rotate ModeConnectorScript Anchor Popup
Auto SumPaste Special DropdownFind Format
Replace FormatList Range PopupList Range Layout Popup
XML Range PopupList Range Layout PopupCanvas Popup
Organization Chart PopupDiagramLayout
SelectAdd CommandBuilt-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