禁用菜单和工具栏

本文内容中的所有示例都使用False来禁用命令栏控件,若想启用该控件则将其改为True。
禁用某命令栏
下面的代码将禁用“工作表菜单栏”:
Application.CommandBars(”Worksheet Menu Bar”).Enabled = False
下面的代码将禁用“标准”工具栏:
Application.CommandBars(”Standard”).Enabled = False
下面的代码将禁用单元格快捷菜单(即在单元格中右击后出现的菜单):
Application.CommandBars(”Cell”).Enabled = False
注意:在代码中,必须使用命令栏的英文名称。如果使用其本地名称,则代码不会运行。
在网上有很多例子,列出了Excel的命令栏名称。您也可以使用下面的代码,列出Excel命令栏的英文名称和本地名称。
Sub Get_Commandbars_Names()
    Dim Cbar As CommandBar
    Dim NewWS As Worksheet
    Dim RNum As Long     RNum = 1
    Set NewWS = Worksheets.Add
    On Error Resume Next
     ActiveSheet.Name = “CommandBarNames”
    On Error GoTo 0    For Each Cbar In Application.CommandBars
         NewWS.Cells(RNum, “A”).Value = Cbar.Name
         NewWS.Cells(RNum, “B”).Value = Cbar.NameLocal
         RNum = RNum + 1
    Next Cbar     NewWS.Columns.AutoFit
End Sub
禁用所有的命令栏
下面的代码将禁用所有的命令栏:
Sub Disable_Command_Bars_1()
    ‘禁用所有的命令栏
    Dim Cbar As CommandBar
    For Each Cbar In Application.CommandBars
         Cbar.Enabled = False
    Next
End Sub
禁用某菜单或控件
如果想要禁用指定的菜单或控件,则必须知道并使用它们的Id。
在下面的地址中可以找到这些资源:
点击下载显示所有图标及ID号的工作簿
点击下载显示命令栏及ID的加载宏
(1)禁用菜单工具栏中的某菜单
下面用两种方式禁用菜单工具栏中的“文件”菜单
1)使用命令栏控件的名称

Application.CommandBars(”Worksheet Menu Bar”).Controls(”文件(F)”).Enabled = False
注意,代码中控件的名称应该使用本地名称,比如中文版的Excel则使用”文件(F)”。
2)使用命令栏控件的ID数字(这种方式适用于所有语言的Excel版本)

Application.CommandBars(”Worksheet Menu Bar”).FindControl(ID:=30002).Enabled = False
由于所使用控件的ID号30002是唯一的,因此可直接使用FindControl方法:
Application.CommandBars.FindControl(ID:=30002).Enabled = False
(2)下面的代码禁用“视图”菜单下的“全屏显示”菜单项:
Application.CommandBars(”Worksheet Menu Bar”).FindControl _
(ID:=178, Recursive:=True).Enabled = False
代码中,使用Recursive:=True在工作表菜单栏中的所有子菜单中查找。
下面的代码仅禁用“标准”工具栏中的“复制”按钮控件:
Application.CommandBars(”Standard”).FindControl _
(ID:=19).Enabled = False
下面的代码禁用所有命令栏中的“复制”控件,包括菜单栏、工具栏和快捷菜单。
在Excel 2000-2003版本中,使用下面的代码(使用Office.CommandBarControl):
Sub MenuControl_False()
‘ Excel 2000 - 2003
    Dim Ctrl As Office.CommandBarControl
    For Each Ctrl In Application.CommandBars.FindControls(ID:=19)
         Ctrl.Enabled = False
    Next Ctrl
End Sub
如果要在Excel 97中使用,则使用下面的代码:
Sub MenuControl_Enabled_False()
‘ Excel 97 - 2003
    Dim Ctl As CommandBarControl
    Dim Cbar As Integer
    On Error Resume Next
    For Cbar = 1 To Application.CommandBars.Count
        For Each Ctl In Application.CommandBars(Cbar).Controls
             Application.CommandBars(Cbar).FindControl(ID:=19, _
                             Recursive:=True).Enabled = False
        Next Ctl
    Next Cbar
    On Error GoTo 0
End Sub
其他
1) 隐藏公式编辑栏和状态栏
Application.DisplayFormulaBar = False
Application.DisplayStatusBar = False
2) 禁用快捷键
可以使用Application.OnKey进行处理。例如,要禁用“复制”的快捷键(Ctrl+C),则使用下面的代码:
Application.OnKey “^c”, “”
要恢复快捷键,则使用:
Application.OnKey “^c”
4) 禁用工作表菜单栏和其它工具栏上的右击键
Application.CommandBars(”Toolbar List”).Enabled = False
5) 阻止用户打开“自定义”对话框
Application.CommandBars.DisableCustomize = True
避免了用户通过右击工具栏或使用“自定义”菜单项打开“自定义”对话框。
6) 禁用工作表菜单栏中“键入需要帮助的问题”:
Application.CommandBars.DisableAskAQuestionDropdown = True
运行代码后,该下拉框将隐藏。
7) 重置命令栏
Application.CommandBars(”Worksheet Menu Bar”).Reset
重置某内置控件将恢复该控件的原始行为及其属性。重置内置的命令栏将移除自定义控件并恢复内置控件。

Sub aaa()
   Dim aa, bb As Boolean
   aa = True
   bb = False
   Application.CommandBars("ply").Enabled = aa
   '右键点工作表标签是否可用
   Application.CommandBars("cell").Enabled = aa
   '右键点单元格是否可用
   Application.CommandBars("toolbar list").Enabled = aa
   '右键点工具栏及“视图”-“工具栏”是否可用
   Application.CommandBars("autocalculate").Enabled = aa
   '右键点状态栏是否可用
   Application.CommandBars("worksheet menu bar").Enabled = aa
   Application.CommandBars(1).Enabled = aa
   '以上两句的作用都是把菜单取消
   Application.CommandBars(2).Enabled = aa
   '暂时未知
   Application.CommandBars(3).Enabled = aa
   '常用工具栏是否可用
   Application.CommandBars(3).Controls(3).Enabled = aa
   '使常用工具栏中第三个“保存”是否可用
   Application.CommandBars(4).Enabled = aa
   '格式工具栏是否可用
   Application.CommandBars(5).Enabled = aa
   '暂时未知
   Application.CommandBars(1).Enabled = aa
   '恢复菜单可用
   Application.CommandBars(1).Controls(1).Enabled = aa
   '使菜单中的“文件”是否可用
   Application.CommandBars("file").Controls("页面设置(&U)...").Enabled = aa
   '菜单中的“文件”中的“页面设置”是否可用
   Application.CommandBars(1).Controls(4).Enabled = aa
   '菜单中的第四个“插入”是否可用
   Application.CommandBars(1).Controls(4).Caption = "victor"
   '更改名称
   Application.CommandBars(1).Reset
   '恢复菜单
   Application.DisplayFormulaBar = aa
   '编辑栏是否显示
   Application.DisplayStatusBar = aa
   '状态栏是否显示
   ActiveWindow.DisplayHeadings = aa
   '行号列标是否显示
   ActiveWindow.DisplayWorkbookTabs = aa
   '工作表标签是否显示
   ActiveWindow.DisplayHorizontalScrollBar = aa
   '水平滚动条是否显示
   ActiveWindow.DisplayVerticalScrollBar = aa
   '垂直滚动条是否显示
   Application.Caption = "工资统计系统"
   '标题栏中的“Microsoft Excel”更换为“工资统计系统”
   End Sub
posted @ 2010-09-17 17:11  与时俱进  阅读(3836)  评论(0编辑  收藏  举报
友情链接:同里老宅院民居客栈