• 禁用菜单和工具栏


    本文内容中的所有示例都使用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
  • 相关阅读:
    软件开发面试
    jQuery插件
    基于消息的软件架构
    线程池的原理及实现(转)
    java实现生产者消费者问题(转)
    并发队列ConcurrentLinkedQueue和阻塞队列LinkedBlockingQueue用法(转)
    JAVA CAS原理深度分析(转)
    菜鸟nginx源码剖析 框架篇(一) 从main函数看nginx启动流程(转)
    Android中利用Handler实现消息的分发机制(三)
    char* 和char[]的差别
  • 原文地址:https://www.cnblogs.com/top5/p/1829490.html
Copyright © 2020-2023  润新知