Adrop-down control has a List property that is an array of its list values and a ListIndex property
that is the index number of the current list value. The ActionControl property of the CommandBar
object, which refers to the currently active control, is a quick way to reference the control and access the
Listand ListIndexproperties to get the department code required. The code is then used to perform
the appropriate AutoFilter operation. If the (All) option is chosen, the AutoFilterMode property of the
worksheet that is the parent of the DatabaseRange object is set to False, removing the AutoFilter
drop-downs and showing any hidden rows.
It is a good idea to run CreateToolbar from the Workbook_Openevent procedure, and to delete the
toolbar in the Workbook_BeforeClose event procedure. The toolbar will remain permanently in Excel
if it is not deleted, and will give unexpected results if its buttons are pressed when other workbooks are
active. If you do refer to command bars directly in workbook event procedures, you need to qualify the
reference with Application:
Application.CommandBars(“Manage Data”).Delete
Popup Menus
Excel’s built-in shortcut menus are included in the command bar listing created by the macro
ListFirstLevelControls, which you saw earlier in this chapter. The following modified version of
this macro shows only the command bars of type msoBarTypePopup, as shown in Figure 15-11.
Figure 15-11
338
Chapter 15: Command Bars
Pdf rotate page - rotate PDF page permanently in C#.net, ASP.NET, MVC, Ajax, WinForms, WPF
Empower Users to Change the Rotation Angle of PDF File Page Using C#
how to rotate a pdf page in reader; how to rotate pdf pages and save
Pdf rotate page - VB.NET PDF Page Rotate Library: rotate PDF page permanently in vb.net, ASP.NET, MVC, Ajax, WinForms, WPF
PDF Document Page Rotation in Visual Basic .NET Class Application
how to rotate one page in a pdf file; rotate single page in pdf file
The code to display the popups is shown here:
Sub ListPopups()
Dim ctl As CommandBarControl
Dim cbr As CommandBar
Dim iRow As Integer
If Not IsEmptyWorksheet(ActiveSheet) Then Exit Sub
‘Ignore errors and freeze screen
On Error Resume Next
Application.ScreenUpdating = False
‘Enter headings
Cells(1, 1).Value = “CommandBar”
Cells(1, 2).Value = “Control”
Cells(1, 3).Value = “FaceId”
Cells(1, 4).Value = “ID”
Cells(1, 1).Resize(1, 4).Font.Bold = True
‘Set row to 2
iRow = 2
‘Loop through all commandbars
For Each cbr In CommandBars
Application.StatusBar = “Processing Bar “ & cbr.Name
‘Only list popups
If cbr.Type = msoBarTypePopup Then
Cells(iRow, 1).Value = cbr.Name
iRow = iRow + 1
‘Loop through controls on popup commandbar
For Each ctl In cbr.Controls
Cells(iRow, 2).Value = ctl.Caption
ctl.CopyFace
If Err.Number = 0 Then
ActiveSheet.Paste Cells(iRow, 3)
Cells(iRow, 3).Value = ctl.FaceId
End If
Cells(iRow, 4).Value = ctl.ID
Err.Clear
iRow = iRow + 1
Next ctl
End If
339
Chapter 15: Command Bars
C# TIFF: How to Rotate TIFF Using C# Code in .NET Imaging
Convert Tiff to Jpeg Images. Convert Word, Excel, PowerPoint to Tiff. Convert PDF to Tiff. Move Tiff Page Position. Rotate a Tiff Page. Extract Tiff Pages. Tiff
rotate individual pages in pdf reader; pdf expert rotate page
VB.NET PDF Page Delete Library: remove PDF pages in vb.net, ASP.
XDoc.PDF ›› VB.NET PDF: Delete PDF Page. using RasterEdge.Imaging.Basic; using RasterEdge.XDoc.PDF; How to VB.NET: Delete a Single PDF Page from PDF File.
rotate pdf page few degrees; rotate individual pdf pages reader
Next cbr
Range(“A:B”).EntireColumn.AutoFit
Application.StatusBar = False
End Sub
The listing is identical to ListFirstLevelControls, apart from the introduction of a block If structure
that processes only command bars of type msoBarTypePopup. If you look at the listing produced by
ListPopups, you will find you can identify the common shortcut menus. For example, there are com-
mand bars named Cell, Row, and Column that correspond to the shortcut menus that pop up when you
right-click a worksheet cell, row number, or column letter.
You might be confused about the fact that the Cell, Row, and Column command bars are listed twice.
The first set is for a worksheet in Normal view. The second set is for a worksheet in Page Break Preview.
Having identified the shortcut menus, you can tailor them to your own needs using VBA code. For
example, Figure 15-12 shows a modified Cell command bar that includes an option to Clear All.
The Clear All control was added using the following code:
Public Sub AddShortCut()
Dim cbr As CommandBar
Dim ctl As CommandBarControl
Dim lIndex As Long
Set cbr = CommandBars(“Cell”)
lIndex = cbr.Controls(“Clear Contents”).Index
Set ctl = cbr.Controls.Add(Type:=msoControlButton, _
ID:=1964, Before:=lIndex)
ctl.Caption = “Clear &All”
End Sub
AddShortCutstarts by assigning a reference to the Cellcommand bar to cbr.
If you want to refer to the Cell command bar that is shown in Page Break view in Excel 2007, you can use
its Index property:
Set cbBar = CommandBars(39)
Another tricky one is the Workbook tabs command bar. This is not the shortcut that
you get when you click an individual worksheet tab. It is the shortcut for the work-
book navigation buttons to the left of the worksheet tabs. The shortcut for the tabs
is the Ply command bar.
340
Chapter 15: Command Bars
VB.NET PDF Page Insert Library: insert pages into PDF file in vb.
PDF Pages. |. Home ›› XDoc.PDF ›› VB.NET PDF: Insert PDF Page. Professional .NET PDF control for inserting PDF page in Visual Basic .NET class application.
rotate all pages in pdf and save; pdf reverse page order online
C# PDF Page Insert Library: insert pages into PDF file in C#.net
page processing functions, such as how to merge PDF document files by C# code, how to rotate PDF document page, how to delete PDF page using C# .NET, how to
rotate pdf page; rotate pdf pages in reader
Figure 15-12
You need to take care here, if you want code compatible with other versions of Office. In Excel 2003, the
Indexproperty of the Cellcommand bar in Page Break view is 32, in Excel 2000 it is 26, and in Excel 97
it is 24.
AddShortCutrecords the Indexproperty of the Clear Contentscontrol in lIndex, so that it can add
the new control before the ClearContents control. AddShortCut uses the Add method of the Controls
collection to add the new control to cbBar, specifying the ID property of the built-in Edit➪Clear ➪
All menu item on the Worksheet menu bar.
The Add method of the Controls collection allows you to specify the Idproperty of a built-in command.
The listing from ListAllControlsallows you to determine that the Idproperty, which is the same
as the FaceId property, of the Edit➪Clear ➪All menu item is 1964.
The built-in Captionproperty for the newly added control is All, so AddShortCutchanges the Caption
to be more descriptive.
You can safely leave the modified Cell command bar in your CommandBars collection. It is not tied to
any workbook and does not depend on having access to macros in a specific workbook.
341
Chapter 15: Command Bars
C# PDF Page Delete Library: remove PDF pages in C#.net, ASP.NET
Pages. |. Home ›› XDoc.PDF ›› C# PDF: Delete PDF Page. Demo Code: How to Delete a Single PDF Page from PDF File in C#.NET. How
pdf rotate single page reader; rotate all pages in pdf preview
VB.NET PDF - View PDF with WPF PDF Viewer for VB.NET
1. Anticlockwise rotation. Rotate PDF page 90 degree in anticlockwise. 2. Clockwise rotation. Rotate PDF page 90 degree in clockwise. 3. Zoom in.
rotate single page in pdf reader; rotate single page in pdf
Showing Popup Comm and Bars
If you want to display a shortcut menu without having to right-click a cell, or chart, you can create code
to display the shortcut in a number of ways. For example, you might like to display the shortcut Cell
command bar from the keyboard, using Ctrl+Shift+C. You can do this using the following code:
Sub SetShortCut()
Application.OnKey “^+c”, “ShowCellShortCut”
End Sub
Private Sub ShowCellShortCut()
CommandBars(“Cell”).ShowPopup x:=0, y:=0
End Sub
ShowCellShortCutuses the ShowPopupmethod to display the Cell shortcut menu at the top-left corner
of the screen. The parameters are the x and y screen coordinates for the top-left corner of the menu.
You can also create a popup menu from scratch. The popup in Figure 15-13 appears when you right-click
inside the range named Database. Outside the range, the normal Cell popup menu appears.
Figure 15-13
The following code created the popup menu:
342
Chapter 15: Command Bars
C# WPF PDF Viewer SDK to view PDF document in C#.NET
1. Anticlockwise rotation. Rotate PDF page 90 degree in anticlockwise. 2. Clockwise rotation. Rotate PDF page 90 degree in clockwise. 3. Zoom in.
pdf rotate just one page; how to change page orientation in pdf document
VB.NET PDF - WPF PDF Viewer for VB.NET Program
Existing PDF Pages. Page: Replace PDF Pages. Page: Move Page Position. Page: Copy, Paste PDF Pages. Page: Rotate a PDF Page. PDF Read. Text
reverse pdf page order online; rotate pdf pages on ipad
Sub MakePopup()
‘Get rid of any existing toolbar called Data Popup
On Error Resume Next
CommandBars(“Data Popup”).Delete
On Error GoTo 0
‘Add new popup commandbar
With CommandBars.Add(Name:=”Data Popup”, Position:=msoBarPopup)
‘Add controls
With .Controls.Add(Type:=msoControlButton)
.OnAction = “ShowDataForm”
.FaceId = 264
.Caption = “Data Form”
.TooltipText = “Show Data Form”
End With
With .Controls.Add(Type:=msoControlButton)
.Caption = “Sort Ascending”
.FaceId = 210
.OnAction = “SortList”
.Parameter = “Asc”
End With
With .Controls.Add(Type:=msoControlButton)
.Caption = “Sort Descending”
.FaceId = 211
.OnAction = “SortList”
.Parameter = “Dsc”
End With
End With
End Sub
The code is similar to the code that created the custom menu and toolbar in previous examples. The dif-
ference is that, when the popup is created by the Add method of the CommandBars collection, the
Positionparameter is set to msoBarPopup. The Nameproperty here is set to Data Popup.
You can display the popup with the following BeforeRightClick event procedure in the code module
behind the worksheet that displays the Database range:
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, _
Cancel As Boolean)
If Not Intersect(Range(“Database”), Target) Is Nothing Then
CommandBars(“Data Popup”).ShowPopup
Cancel = True
End If
End Sub
343
Chapter 15: Command Bars
When you right-click the worksheet, the event procedure checks to see if Target is within Database.
If so, it displays Data Popup and cancels the right-click event. Otherwise the normal Cell shortcut menu
appears.
Table-Driven Command Bar Creation
Very few professional Excel developers write code to add their menu items and toolbars one-by-one.
Most use a table-driven approach, whereby they fill out a table with information about the items they
want to add, then have a routine that generates all the items based on this table. This makes it much eas-
ier to define and modify the design of your command bars.
Say you want to create the Custom menu, which you set up earlier in this chapter, using this new
method. The first thing that is needed is a table for the menu information. Insert a new worksheet,
change its name to MenuTable, and fill out the sheet as shown in Figure 15-14 and Figure 15-15.
The worksheet named Data contains the employee database, and DataLists will be used later to define a
list of departments.
Figure 15-14
Figure 15-15
The columns of the MenuTable are:
Column Title
Description
A
App / VBE
Either App to add items to Excel’s menus or VBE to add them to the
VBE. The code to handle VBE entries is provided in Chapter 26.
B
CommandBar
The name of the top-level command bar to add the menu to. Get
these names from the listings generated earlier in this chapter.
C
Sub Control ID
The ID number of a built-in popup bar to add menu to. For example,
30002 is the ID of the File popup menu.
344
Chapter 15: Command Bars
Column Title
Description
D
Type
The type of control to add: 1 for a normal button, 10 for a popup,
and so on. These correspond to the msoControl...types listed in
the Object Browser.
E
Caption
The text to use for the menu item.
F
Position
The position in the command bar to add the menu item. Leave this
blank to add the menu to the end of the bar.
G
Begin Group
Trueor Falseto specify whether to place a separator line before the
item.
H
BuiltIn ID
If you’re adding a built-in menu item, this is the ID of that menu.
Use 1 for all custom menu items.
I
Procedure
The name of the procedure to run when a custom menu item is
clicked.
J
FaceId
The ID number of the built-in tool face to use for the menu. This can
also be the name of a picture in the worksheet to use for the button
face. 18 is the number for the standard New icon.
K
ToolTip
The text of the popup ToolTip to show for the button.
L
Parameter
The string to be assigned to the Parameter property of the button.
M
DataList
Only used with controls that have drop-down lists, such as type 
msoControlDropdown(type 3). It contains the name of a range of
cells in the worksheet called DataLists that contains items to be
added to the drop-down list.
N+
Popup1–n
If you add your own popup menus, this is the caption of the custom
popup to add further menu items to. You can include as many levels
of popup as you like by simply adding more columns—the code
will detect the extra columns.
Because the MenuTable sheet will be referred to a number of times in code, it is a good idea to give it a
meaningful “code name,” such as wksMenuTable. To do this, locate and select the sheet in the Project
Explorer in the VBE, and change its name in the Properties window. It should now be shown as
wksMenuTable (MenuTable)in the Project Explorer. Using the code name allows you to refer directly
to that sheet as an object, so the following two lines are equivalent:
Debug.Print ThisWorkbook.Worksheets(“MenuTable”).Name
Debug.Print wksMenuTable.Name
The DataLists sheet needs to be renamed as wksDataLists in the same way.
345
Chapter 15: Command Bars
The code to create the menu from this table is shown next. The code should be copied into a new module
called modSetupBars.
At the top of the module, a number of constants are declared, which correspond to each column of the
menu table, and you will use these throughout your code. If the menu table structure changes, all you
need to do is renumber these constants—you don’t need to search through the code:
‘Constants for the columns in the commandbar creation table
Const miTABLE_APP_VBE           As Integer = 1
Const miTABLE_COMMANDBAR_NAME   As Integer = 2
Const miTABLE_CONTROL_ID        As Integer = 3
Const miTABLE_CONTROL_TYPE      As Integer = 4
Const miTABLE_CONTROL_CAPTION   As Integer = 5
Const miTABLE_CONTROL_POSITION  As Integer = 6
Const miTABLE_CONTROL_GROUP     As Integer = 7
Const miTABLE_CONTROL_BUILTIN   As Integer = 8
Const miTABLE_CONTROL_PROC      As Integer = 9
Const miTABLE_CONTROL_FACEID    As Integer = 10
Const miTABLE_CONTROL_TOOLTIP   As Integer = 11
Const miTABLE_CONTROL_PARAMETER As Integer = 12
Const miTABLE_CONTROL_DATALIST  As Integer = 13
Const miTABLE_POPUP_START       As Integer = 14
‘Constant to determine whether commandbars are temporary or permanent
‘If you set this to False, users will not loose any additional controls
‘that they add to your custom commandbars
Const mbTEMPORARY               As Boolean = False
‘The following Application ID is used to identify our menus, making it easy to
‘remove them
Const psAppID As String = “TableDrivenCommandBars”
The mbTEMPORARY constant allows you to make the menu changes temporary or permanent. psAppID
provides an identifying string that will be assigned to the Tag property of your added controls, which
makes it easy to find and remove them.
The routine to actually set up the menus is called from the workbook’s Auto_Open procedure or
Workbook_Openevent procedure:
‘ Subroutine: SetUpMenus
‘ Purpose:    Adds the commandbars defined in the wksMenuTable worksheet’
Sub SetUpMenus()
Dim rngRow As Range
Dim cbrAllBars As CommandBars
Dim cbrBar As CommandBar
Dim ctlButton As CommandBarControl
Dim iBuiltInID As Integer, iPopUpCol As Integer, vData As Variant
Dim rng As Range
On Error Resume Next    ‘Just ignore errors in the table definition
‘Remove all of our menus before adding them.
346
Chapter 15: Command Bars
‘This ensures we don’t get any duplicated menus
RemoveMenus
‘Loop through each row of our menu generation table
For Each rngRow In wksMenuTable.Cells(1).CurrentRegion.Rows
‘Ignore the header row
If rngRow.Row > 1 Then
‘Read the row into an array of the cells’ values
vData = rngRow.Value
Set cbrBar = Nothing
Asingle routine can be used to add menu items to both the Excel and VBE menus. The only difference is
the CommandBars collection that is used —Excel’s or the VBE’s. This code does not contain all the ele-
ments necessary to add VBE menus. The additional requirements are discussed in Chapter 26:
‘Get the collection of all command bars, either in the VBE or Excel
If vData(1, miTABLE_APP_VBE) = “VBE” Then
Set cbrAllBars = Application.VBE.CommandBars
Else
Set cbrAllBars = Application.CommandBars
End If
‘Try to find the commandbar we want
Set cbrBar = cbrAllBars.Item(vData(1, miTABLE_COMMANDBAR_NAME))
‘Did we find it - if not, we must be adding one!
If cbrBar Is Nothing Then
Set cbrBar = cbrAllBars.Add( _
Name:=vData(1, miTABLE_COMMANDBAR_NAME), temporary:=mbTEMPORARY)
End If
If you want to look for a built-in popup menu to add your control to, you can recursively search for it in
the CommandBars collection. For example, if you want to add a menu item to the Cell shortcut under the
Filter menu, you can enter the ID of the Filter menu (31402) in the Sub Control ID column of the table.
Alternatively, you can enter one or more control name entries in the PopUp columns of the table.
Entering Filter under PopUp1 accomplishes the same result as placing 31402 under Sub Control ID.
The first method is convenient when adding controls to the built-in menus. The alternative method is
necessary to add items to the menus you create yourself:
‘If set, locate the built-in popup menu bar (by ID) to add our control to.
‘e.g. Worksheet Menu Bar > Edit
If Not IsEmpty(vData(1, miTABLE_CONTROL_ID)) Then
Set cbrBar = cbrBar.FindControl(ID:=vData(1, miTABLE_CONTROL_ID), _
Recursive:=True).CommandBar
End If
‘Loop through the PopUp name columns to navigate down the menu structure
For iPopUpCol = miTABLE_POPUP_START To UBound(vData, 2)
‘If set, navigate down the menu structure to the next popup menu
If Not IsEmpty(vData(1, iPopUpCol)) Then
Set cbrBar = cbrBar.Controls(vData(1, iPopUpCol)).CommandBar
End If
Next
347
Chapter 15: Command Bars
Documents you may be interested
Documents you may be interested