精华内容
下载资源
问答
  • VBA自定义工具栏按钮制作方法

    千次阅读 2011-04-02 10:26:27
    在 Excel 中点击菜单 “工具” → “自定义” ,在弹出的对话框中选择 “命令”栏,在左边的“类别”框中选择“宏”,在右边的“命令”框中左键拖动“自定义按钮”到任意一个工具栏上(自己觉得方便的位置上即可),...

    在 Excel 中点击菜单 “工具” → “自定义” ,在弹出的对话框中选择 “命令”栏,在左边的“类别”框中选择“宏”,在右边的“命令”框中左键拖动“自定义按钮”到任意一个工具栏上(自己觉得方便的位置上即可),右键点击刚刚拖到工具栏上的图标,选择“指定宏”,在弹出的“指定宏”对话框中选择要使用的宏名字,点“确定” → “关闭”,要使用该宏,只需点击刚刚拖到工具栏上的按钮即可。 

     

    说明:上面的按钮只能用于包含上述代码的工作簿,若要对其他工作簿也适用,则可新建一空白工作簿,进入VBA编辑器,在此空白工作簿下新建一模块,将上述代码复制到该模块中,返回 Excel ,点击“另存为”,选择保存类型为 “Microsoft Office Excel 加载宏(*.xla)”,将此加载宏文件复制到 “Documents and Settings/<user name>/Application Data/Microsoft/AddIns” 文件夹内,重新打开 Excel ,点击菜单 “工具” → “加载宏”,此时在 “可用加载宏” 可看到多出了一个刚刚保存的加载宏的文件名字的选项,将此项前面的勾打上,即可在以后打开 Excel 时自动加载该宏。此时再按上述第2点中的步骤设置按钮时,在选择“指定宏”时,在弹出的“指定宏”对话框中看不到任何选项,不用理会直接输入自己的宏名,再点“确定” → “关闭”,返回 Excel 操作界面即可在任何工作簿中使用该按钮了。

    展开全文
  • 替换工具栏按钮的图标_Excel VBA应用.rar,Excel为工具栏按钮提供了大量的内置图标,每个图标对应一个FacelD。通过指定FaceID,可以为工具栏按钮设置不同的图标,这为创建个性用户的工具栏以及自定义工具栏提供了便利...
  • 测试博客 Hope all is well and you are enjoying our slightly ...Sub 添加一个自定义工具栏() On Error Resume Next '防止没有自定义工具栏的时候Delete语句出错 CommandBars("我的命令栏").Delete With Applic...

    测试博客
    Hope all is well and you are enjoying our slightly cooler temperatures.
    VBA Code 创建与删除工具栏

    Sub 添加一个自定义工具栏()
    On Error Resume Next    '防止没有自定义工具栏的时候Delete语句出错
    CommandBars("我的命令栏").Delete
    With Application.CommandBars.Add(Name:="我的命令栏", Temporary:=True) '添加一个工具栏并指定其名称与位置
        With .Controls.Add          '添加工具栏中的一个按钮
            '然后指定按钮的属性
            .FaceId = 263                         '图标
            .TooltipText = "鼠标飞过图标时的提示"    '提示(鼠标飞过图标时的提示)
            .OnAction = "指定响应的宏"              '指定响应的宏
            .Caption = "按钮1"                     '标题, 可用&标识快捷键,如:&Dashboard, Weekly&Report.
            .Style = msoButtonAutomatic           '样式
            .ShortcutText = "Alt+S"               '快捷键提示(需要另外的代码来添加快捷键)
        End With
        .Visible = True '让工具栏可见
    End With
    End Sub
    展开全文
  • 但是如何实现工具栏中的命令与宏进行绑定,对于初学则来说是一个不小的门槛。 今天,给大家介绍一下在Excel里写完宏后,如何通过宏自动生成工具栏。 如图: 在VBA中将要用到CommandBar,CommandBarButton两...
    Office由于提供了VBA,为大家开发一些定制功能提供了一种途径。但是如何实现工具栏中的命令与宏进行绑定,对于初学则来说是一个不小的门槛。

         今天,给大家介绍一下在Excel里写完宏后,如何通过宏自动生成工具栏。

     

    如图:

    工具栏

     

    在VBA中将要用到CommandBar,CommandBarButton两个对象。

     

    Option Explicit

    '定义全局变量

    Private zyi_Bar As CommandBar
    Private zyi_ComBarBtn  As CommandBarButton

     

     

    '-------------------------------------------------------------------------------------------------------------

    '增加工具栏

    '-------------------------------------------------------------------------------------------------------------

    Sub AddToolBar()
    '
    '

    '
     '   Application.CommandBars.Add(Name:="zy").Visible = True
     
    Dim strBarName As String
    Dim strParam As String
    Dim strCaption As String
    Dim strCommand As String
    Dim nIndex As Integer
    Dim nFaceId As Integer

    Dim cBar As CommandBar

    strBarName = "ZYI_TOOL"


    For Each cBar In Application.CommandBars
        If cBar.Name = strBarName Then
            Set zyi_Bar = cBar
            GoTo 20
        End If
    Next

    'On Error GoTo 10
    'Set zyi_Bar = Application.CommandBars(strBarName)
    'If zyi_Bar.Name = strBarName Then
    '  GoTo 20    '已经存在
    '  zyi_Bar.Delete
    'End If

    '10:

    On Error GoTo 100


    Set zyi_Bar = Application.CommandBars.Add(Name:=strBarName)

    20:
    zyi_Bar.Visible = True

    On Error GoTo 100

     

    '-----------------------------------------------------------
    '1. 复制工作表


    nIndex = 1
    strCaption = "复制工作表"
    strParam = "复制工作表的单元格内容及格式!"
    strCommand = "复制工作表"
    nFaceId = 271
    If zyi_Bar.Controls.Count < nIndex Then
       AddComBarBtn strParam, strCaption, strCommand, nIndex, nFaceId
    ElseIf zyi_Bar.Controls(nIndex).Caption <> strCaption Then
        AddComBarBtn strParam, strCaption, strCommand, nIndex, nFaceId
    End If

     

    '-----------------------------------------------------------
    '2. 合并单元格


    nIndex = 2
    strCaption = "合并单元格"
    strParam = "合并单元格以及居中"
    strCommand = "合并单元格"
    nFaceId = 29
    If zyi_Bar.Controls.Count < nIndex Then
       AddComBarBtn strParam, strCaption, strCommand, nIndex, nFaceId
    ElseIf zyi_Bar.Controls(nIndex).Caption <> strCaption Then
        AddComBarBtn strParam, strCaption, strCommand, nIndex, nFaceId
    End If
       

    '-----------------------------------------------------------
    '3. 居中


    nIndex = 3
    strCaption = "居中"
    strParam = "水平垂直居中"
    strCommand = "居中单元格"
    nFaceId = 482
    If zyi_Bar.Controls.Count < nIndex Then
       AddComBarBtn strParam, strCaption, strCommand, nIndex, nFaceId
    ElseIf zyi_Bar.Controls(nIndex).Caption <> strCaption Then
        AddComBarBtn strParam, strCaption, strCommand, nIndex, nFaceId
    End If

     

    '-----------------------------------------------------------

    '4. 货币


    nIndex = 4
    strCaption = "货币"
    strParam = "货币"
    strCommand = "货币"
    nFaceId = 272
    If zyi_Bar.Controls.Count < nIndex Then
       AddComBarBtn strParam, strCaption, strCommand, nIndex, nFaceId
    ElseIf zyi_Bar.Controls(nIndex).Caption <> strCaption Then
        AddComBarBtn strParam, strCaption, strCommand, nIndex, nFaceId
    End If

     

    '-----------------------------------------------------------
    '5. 将货币数字转换为大写


    nIndex = 5
    strCaption = "删除列"
    strParam = "删除列"
    '宏名称
    strCommand = "删除列"
    nFaceId = 1668
    If zyi_Bar.Controls.Count < nIndex Then
       AddComBarBtn strParam, strCaption, strCommand, nIndex, nFaceId
    ElseIf zyi_Bar.Controls(nIndex).Caption <> strCaption Then
        AddComBarBtn strParam, strCaption, strCommand, nIndex, nFaceId
    End If

    nIndex = nIndex + 1
    While nIndex < zyi_Bar.Controls.Count
        zyi_Bar.Controls(nIndex).Delete
    Wend

     

    '-----------------------------------------------------------

    '6. 分割条
    zyi_Bar.Controls(zyi_Bar.Controls.Count).BeginGroup = True

     

    '-----------------------------------------------------------

    '7. 将货币数字转换为大写


    nIndex = 6
    strCaption = "人民币"
    strParam = "人民币由数字转换为大写"

     

    '宏名称
    strCommand = "To大写人民币"
    nFaceId = 384
    If zyi_Bar.Controls.Count < nIndex Then
       AddComBarBtn strParam, strCaption, strCommand, nIndex, nFaceId
    ElseIf zyi_Bar.Controls(nIndex).Caption <> strCaption Then
        AddComBarBtn strParam, strCaption, strCommand, nIndex, nFaceId
    End If

    nIndex = nIndex + 1
    While nIndex < zyi_Bar.Controls.Count
        zyi_Bar.Controls(nIndex).Delete
    Wend

     

    '-----------------------------------------------------------

    '9. 分割条
    zyi_Bar.Controls(zyi_Bar.Controls.Count).BeginGroup = True

     

    100:

     

    End Sub

    '-------------------------------------------------------------------------------------------------------------

    '向工具栏动态添加按钮

    '-------------------------------------------------------------------------------------------------------------

    Sub AddComBarBtn(strParam As String, strCaption As String, strCommand As String, nIndex As Integer, nFaceId As Integer)
    '
    Set zyi_ComBarBtn = zyi_Bar.Controls.Add( _
            ID:=1, _
            Parameter:=strParam, _
            Before:=nIndex, _
            Temporary:=True)
           
    With zyi_ComBarBtn
        .Caption = strCaption
        .Visible = True
        .OnAction = strCommand
        .FaceId = nFaceId
    End With

    End Sub

    通过以上两个函数,就可以实现自动添加工具栏及按钮。

     

    剩下将在Workbook_Open函数里调用AddToolBar,即可实现文件打开就会显示工具栏。如果仅作为工具存放,则可以把该文件保存为模版文件,即xxx.xla。

     

    Private Sub Workbook_Open()


    '   MsgBox "欢迎使用Excel", vbInformation + vbOKOnly, "增强工具"
        Application.StatusBar = "欢迎使用增强工具:zyi"
       

       '显示工具栏
        AddToolBar


    End Sub

    到此,一个来工具栏的宏大功告成了。

    转载于:https://www.cnblogs.com/top5/archive/2009/05/05/1450126.html

    展开全文
  • 将"VBA加载工具.xlsm"置于D:\根目录中,在execl自定义工具栏导入"Excel 自定义.exportedUI"文件 选中要处理数据单元格后,点击宏按钮,会实现功能,同时会加载宏文件(也是个表格,不要关闭) 详见:宏按钮工具栏.jpg ...
  • VBA自定义菜单和菜单

    千次阅读 2013-08-28 20:36:29
    EXCEL通过菜单给我们提供基本操作功能之外,也为我们提供了扩展自定义功能的接口,即自定义自己的工具栏、菜单栏。 本文着重介绍如何在 Excel 2003版本中通过编程方式自定义菜单和菜单栏方法。其中包含Excel 中...

    EXCEL中,我们的操作都是通过工具栏、菜单栏、快捷菜单实现。EXCEL通过菜单给我们提供基本操作功能之外,也为我们提供了扩展自定义功能的接口,即自定义自己的工具栏、菜单栏。

    本文着重介绍如何在 Excel 2003版本中通过编程方式自定义菜单和菜单栏方法。其中包含Excel 中管理和自定义菜单栏、菜单、命令、子菜单和快捷菜单,我将通过代码实例分步说明。

    与大家分享关于VBA实现菜单栏管理与自定义菜单栏功能的实现。

    一、简介

    在 Microsoft Excel 2000以上版本中实现许与自定义菜单栏和菜单相关的常见任务,可以使用“自定义”对话框(见图1.1)。但如果要实现较高级任务或为自定义程序定制菜单栏和菜单,就需要创建 Microsoft Visual Basic for Applications (VBA) 代码。

    有关如何使用“自定义”对话框的更多信息,你可以单击“帮助”菜单上的“Microsoft Excel 帮助”,在“Office 助手”或“搜索向导”中键入自定义菜单栏,然后单击“搜索”查看主题。

    二、命令栏

    在 Microsoft Office 中,所有工具栏、菜单栏和快捷菜单都是被作为“命令栏”这样一种对象以编程方式控制的。下列所有项目在 VBA 中皆用 CommandBar 对象表示:

    l    菜单栏、工具栏和快捷菜单。

    l    菜单栏和工具栏上的菜单。

    l    菜单、子菜单和快捷菜单上的子菜单。

    您可以修改任何内置的菜单栏和工具栏,还可以创建和修改用您自己的 VBA 代码交付的自定义工具栏、菜单栏和快捷菜单。您可以将程序功能以单个按钮的形式放在工具栏上,或以命令名称组的形式放在菜单上。因为工具栏和菜单都是命令栏,所以可以使用同一类型的控件。

     VBA  Microsoft Visual Basic 中,按钮和菜单项用 CommandBarButton 对象表示。显示菜单和子菜单的弹出控件用 CommandBarPopup 对象表示。在以下示例中,名为“Menu”的控件和名为“Submenu”的控件都是用于显示菜单和子菜单的弹出控件,并且这两个控件是各自的控件集中唯一的 CommandBar 对象。

     Microsoft Excel 中,菜单栏和工具栏被视为是同一种可编程对象,即 CommandBar 对象。可以使用CommandBar 对象中的控件来指代菜单、菜单项、子菜单和快捷菜单。可以在 Type 参数中使用一个常量为每个控件指定要用于菜单、子菜单或命令的控件类型。

    三、控件常量

    下面是 Excel 2003 中的各种控件常量的列表,这些常量指定用于特定菜单栏控件的图形控件类型:

     MsoControlActiveX*

     MsoControlAutoCompleteCombo***

     MsoControlButton

     MsoControlButtonDropdown

     MsoControlButtonPopup

     MsoControlComboBox

     MsoControlCustom

     MsoControlDropdown

     MsoControlEdit

     MsoControlExpandingGrid

     MsoControlGauge

     MsoControlGenericDropdown

     MsoControlGraphicCombo

     MsoControlGraphicDropdown

     MsoControlGraphicPopup

     MsoControlGrid

     MsoControlLabel

     MsoControlLabelEx***

     MsoControlOCXDropDown

     MsoControlPane **

     MsoControlPopup

     MsoControlSpinner***

     MsoControlSplitButtonMRUPopup

     MsoControlSplitButtonPopup

     MsoControlSplitDropdown

     MsoControlSplitExpandingGrid

     MsoControlWorkPane**

    表示 Microsoft Excel 2000 中的新增项

    ** 表示 Microsoft Excel 2002 中的新增项

    *** 表示 Microsoft Office Excel 2003 中的新增项

     

    四、菜单栏

    菜单栏是一种命令栏。它是一种可在其中添加菜单、菜单项和子菜单的对象。

    有关如何在 Excel 中管理菜单栏和菜单项的更多信息,请按照下列步骤操作:

     

    1. 启动 Microsoft Visual Basic 编辑器。

    2. 在“帮助”菜单上,单击“Microsoft Visual Basic 帮助”。

    3. 在“Office 助手”框或“应答向导”框中,键入菜单栏,然后单击“搜索”。

    4.  Excel 2003  Excel 2002 中,单击“添加和管理菜单栏和菜单项”。在 Excel 2000 中,单击“关于菜单和工具栏”。

     

    可以在运行时修改菜单栏及该菜单栏上的控件。对菜单栏所做的更改可能会影响菜单栏的外观或位置。可对控件进行的更改取决于控件类型。下表列出了最常见的属性和常用于更改控件的状态、操作或内容的方法:

    属性或方法

    用途

    Add

    添加菜单栏,方法是使用 CommandBars 对象集合的 Add 方法,然后为 Menubar 参数指定 TRUE值。

    Enabled

    如果 Enabled 属性的值为 TRUE,那么用户可以使用 Visual Basic 代码使指定的菜单栏可见。如果Enabled 属性的值为 FALSE,用户就无法让菜单栏可见。不过,菜单栏将出现在可用命令栏列表中。

    Protection

    使您可以通过特定用户操作来保护菜单栏。

    Position

    指定新菜单栏相对于程序窗口的位置。菜单栏相对于程序窗口的位置可以是以下 MsoBarPosition 常量属性之一:msoBarLeftmsoBarTopmsoBarRightmsoBarBottommsoBarFloatingmsoBarPopup(用于创建快捷菜单)或 msoBarMenuBar(仅用于 Apple Macintosh)。

    Visible

    定控件是可见的指,还是隐藏的。

    4.1 Add方法应用于CommandBars对象

    新建一个命令栏并添加到命令栏集合。返回 CommandBar 对象。

    expression.Add ( Name , Position , MenuBar , Temporary )

    l        expression必需。该表达式返回一个 CommandBars 对象。

    l        NameVariant 类型)可选。新命令栏的名称。如果忽略该参数,则为命令栏指定默认名称(例如:Custom 1)。

    l       PositionVariant 类型)可选。新命令栏的位置或类型。可以为下表所列的 MsoBarPosition 常量之一。

    常量

    说明

    msoBarLeftmsoBarTopmsoBarRight msoBarBottom

    指定新命令栏的左侧、顶部、右侧和底部坐标

    msoBarFloating

    指定新命令栏不固定

    msoBarPopup

    指定新命令栏为快捷菜单

    msoBarMenuBar

    仅适用于 Macintosh 

     

    l         MenuBar  (Variant类型)可选。设置为 True 将以新命令栏替换活动菜单栏。默认值为 False

    l         Temporary  (Variant类型)可选。设置为 True 将使新命令栏为临时命令栏。临时命令栏在关闭容器应用程序时删除。默认值为 False

    4.2返回命令栏控件的 ID

    以下代码示例返回活动菜单栏的 ID

    Sub Id_Control ()

    Dim myId as Object

       Set myId = CommandBars("Worksheet Menu Bar").Controls("工具(&T)")

       MsgBox myId.Caption & Chr(13) & MyId.Id

    End Sub

    4.3确定活动菜单栏的名称

    以下代码示例返回活动菜单栏的名称:

    Sub MenuBars_GetName()

       MsgBox CommandBars.ActiveMenuBar.Name

    End Sub

    4.4保存(内置或自定义菜单栏的)活动状态

    您可能需要将 originalMenuBar 变量声明为公共变量,这样,子例程就可以在其他子例程(如 Auto_Close 子例程)中使用该变量。以这种方式声明和使用该变量会将用户的上一个菜单栏重置为初始状态。以下示例宏重置菜单栏:

    Public originalMenuBar as Object

    Sub MenuBars_Capture()

       Set originalMenuBar = CommandBars.ActiveMenuBar

    End Sub

    4.5创建自定义命令栏

    以下代码示例创建名为 My Command Bar 的自定义命令栏:

    Sub MenuBar_Create()

    Application.CommandBars.Add Name:="My command bar"

    End Sub

    您还可以通过使用 Temporary:=True 参数来创建自定义命令栏。Temporary:=True 参数允许命令栏在您退出Excel 时自动重置。以下代码使用 Temporary:=True 参数创建自定义命令栏:

    Sub MenuBar_Create()

    Application.CommandBars.Add Name:="My command bar", Temporary:=True

    End Sub

    4.6显示自定义命令栏

    以下示例创建并显示自定义的“My Custom Bar”菜单栏,然后用它替换内置的菜单栏:

    Sub MenuBar_Show()

    Dim myNewBar As Object

       Set myNewBar = CommandBars.Add(Name:="Custom1", Position:=msoBarFloating)

       '您必须先启用您的自定义菜单栏,然后看见它。

       '使菜单栏添加到自定义对话框列表中的可用菜单栏上。

    '设置菜单属性设置为True取代内置的菜单栏。

       myNewBar.Enabled = True

       myNewBar.Visible = True

    End Sub

    4.7删除自定义命令栏

    以下代码示例删除名为“Custom 1”的自定义菜单栏:

    Sub MenuBar_Delete()

       CommandBars("Custom1").Delete

    End Sub

    4.8隐藏命令栏

    以下代码示例从可用菜单栏列表中删除内置“图表”菜单栏:

    Sub MenuBar_Display()

       CommandBars("Chart").Enabled = False

    End Sub

    4.9显示命令栏

    以下代码示例从可用菜单栏中添加内置“图表”菜单栏:

    Sub MenuBar_Display()

       CommandBars("Chart").Enabled = True

    End Sub

    4.10还原内置命令栏

    还原菜单栏会重置(菜单和菜单项的)默认控件。示例代码还原内置“图表”菜单栏:

    Sub MenuBar_Restore()

       CommandBars("Chart").Reset

    End Sub

    注意:您只能重置内置菜单栏,不能重置自定义菜单栏。

     

     

    五、菜单

    5.1 Add方法用于CommandBarControls对象

    新建一个 CommandBarControl 对象并添加到指定命令栏上的控件集合。

    Expression.Add ( Type , Id , Parameter , Before , Temporary )

    l         expression必需。该表达式返回一个 CommandBarControls 对象。

    l         TypeVariant类型)可选。添加到指定命令栏的控件类型。可以为下列 MsoControlType常量之一:

    常量

    说明

    msoControlButton

    命令按钮

    msoControlEdit

    文本框

    msoControlDropdown

    下拉列表

    msoControlComboBox

    组合框

    msoControlPopup

    弹出菜单

    l         Id Variant 类型)可选。指定内置控件的整数。如果该参数为,或者忽略该参数,将在命令栏中添加一个空的指定类型的自定义控件。

    l         Parameter Variant 类型)可选。对于内置控件,该参数用于容器应用程序运行命令。对于自定义控件,可以使用该参数向 Visual Basic 过程传递信息,或用其存储控件信息(类似于第二个 Tag 属性值)。

    l         BeforeVariant 类型)可选。表示新控件在命令栏上位置的数字。新控件将插入到该位置控件之前。如果忽略该参数,控件将添加到指定命令栏的末端。

    l         TemporaryVariant 类型)可选。设置为True 将使新命令栏为临时命令栏。临时命令栏在关闭容器应用程序时删除。默认值为 False

    5.2向命令栏添加自定义菜单控件

    以下代码示例将您通过编程方式添加的菜单名称添加到“工作表”菜单栏中。例如,此代码会将菜单名称“New Menu”添加到“工作表”菜单栏中。

    注意:您可以根据需要为该菜单指定任何名称。

    Sub Menu_Create()

    Dim myMnu As Object

       Set myMnu = CommandBars("Worksheet menu bar").Controls. _

          Add(Type:=msoControlPopup, before:=3)

       With myMnu

       ' "&" 用以指定快捷键字符 (相当于Alt+M).

          .Caption = "New &Menu"

       End With

    End Sub

    5.3禁用命令栏上的菜单控件

    禁用的菜单控件在命令栏中显示为灰色,并且不可用。以下示例禁用“New Menu”菜单:

    Sub Menu_Disable()

       CommandBars("Worksheet menu bar").Controls("New &Menu").Enabled = False

    End Sub

    5.4启用命令栏上的菜单控件

    以下代码示例启用您在“禁用命令栏上的菜单控件”一节中禁用的 New Menu 菜单:

    Sub Menu_Disable()

       CommandBars("Worksheet menu bar").Controls("New &Menu").Enabled = True

    End Sub

    5.5删除命令栏上的菜单控件

    以下代码示例从“工作表”菜单栏中删除您在“向命令栏添加自定义菜单控件”一节中创建的“New Menu”菜单:

    Sub Menu_Delete()

       CommandBars("Worksheet menu bar").Controls("New &Menu").Delete

    End Sub

    5.6还原命令栏上的菜单控件

    以下代码示例还原“工作表”菜单栏上的内置“图表”菜单栏:

    Sub Menu_Restore()

    Dim myMnu As Object

       Set myMnu = CommandBars("Chart")

       myMnu.Reset

    End Sub

     

    六、命令

    可以对命令进行的修改与控件的类型有关。一般来说,按钮要么被启用,要么被隐藏。而编辑框、下拉列表框和组合框较为灵活一些,因为您可以在列表中添加或删除项目。另外,还可以通过查看在列表中选中的项目的值来确定执行的操作。您可以将任何控件的操作更改为内置函数或自定义函数。

    下表列出了最常见的控件属性和更改控件的状态、操作或内容的方法:

    属性或方法

    用途

    Add

    向命令栏添加命令。

    AddItem

    向下拉列表框或组合框的下拉列表部分添加项目。

    Style

    指定按钮上是显示图标还是显示标题。

    OnAction

    指定用户更改控件值时所运行的过程。

    Visible

    指定控件是可见的,还是隐藏的。

    要了解有关 Excel 2003  Excel 2002 中菜单的更多信息,请按照下列步骤操作:

    1. 启动 Visual Basic 脚本编辑器。

    2. 在“帮助”菜单上,单击“Microsoft Visual Basic 帮助”。

    3. 在“搜索帮助”框中,键入菜单,然后按 Enter

    4. 单击“添加和管理菜单栏和菜单项 (Office)”。

    6.1向菜单控件添加分隔条

    以下代码示例在“插入”菜单上的工作表命令之前添加分隔条:

    Sub menuItem_AddSeparator()

       CommandBars("Worksheet menu bar").Controls("插入(&I)") _

       .Controls("工作表(&W)").BeginGroup = True

    End Sub

    注意:要删除分隔条,请将 BeginGroup 属性设置为 False

    6.2在菜单上创建自定义命令控件

    以下代码示例在“工作表”菜单栏的“工具”菜单上创建名为 Custom1 的新命令,然后,当您单击“Custom1”时,它将运行 Code_Custom1 宏:

    Sub menuItem_Create()

       With CommandBars("Worksheet menu bar").Controls("工具(&T)")

          .Controls.Add(Type:=msoControlButton, Before:=1).Caption = "Custom1"

          .Controls("Custom1").OnAction = "Code_Custom1"

       End With

    End Sub

    6.3在命令控件旁放置选中标记

    以下代码示例在 Custom1 命令未选中的情况下在其旁边放置一个选中标记;如果 Custom1 命令已选中,则将删除该选中标记:

    Sub menuItem_checkMark()

    Dim myPopup as Object

       Set myPopup = CommandBars("Worksheet menu bar").Controls("工具(&T)")

       If myPopup.Controls("Custom1").State = msoButtonDown Then

          ' 删除选中标记旁边的菜单项。

          myPopup.Controls("Custom1").State = msoButtonUp

          MsgBox "Custom1 is now unchecked"

          Else

            '添加复选标记旁边的菜单项。

             myPopup.Controls("Custom1").State = msoButtonDown

             MsgBox "Custom1 is now checked"

        End If

    End Sub

    6.4禁用命令栏上的命令控件

    以下代码示例禁用您在“在菜单上创建自定义命令控件”一节中在“工具”菜单上创建的 Custom1 命令:

    Sub MenuItem_Disable()

    Dim myCmd as Object

       Set myCmd = CommandBars("Worksheet menu bar").Controls("工具(&T)")

       myCmd.Controls("Custom1").Enabled = False

    End Sub

    6.5启用命令栏上的命令控件

    以下代码示例启用您在“禁用命令栏上的命令控件”一节中禁用的 Custom1 命令:

    Sub MenuItem_Enable()

    Dim myCmd as Object

       Set myCmd = CommandBars("Worksheet menu bar").Controls("工具(&T)")

       myCmd.Controls("Custom1").Enabled = True

    End Sub

    6.6删除菜单上的命令控件

    以下代码示例删除“文件”菜单上的“保存”命令:

    Sub menuItem_Delete()

    Dim myCmd As Object

       Set myCmd = CommandBars("Worksheet menu bar").Controls("文件(&F)")

       myCmd.Controls("保存(&S)").Delete

    End Sub

    6.7还原菜单上的内置命令控件

    要还原菜单上的命令控件,必须知道该控件的标识 (ID) 号。要确定 ID 号,请参见“返回命令栏控件的ID”一节。以下示例先删除您在“删除菜单上的命令控件”一节中删除的“保存”命令,然后又将其还原:

    Sub menuItem_Restore()

    Dim myCmd As Object

       Set myCmd = CommandBars("Worksheet menu bar").Controls("文件(&F)")

       ' Id 3 为保存子菜单项ID.

       myCmd.Controls.Add Type:=msoControlButton, ID:=3, Before:=5

    End Sub

     

    七、子菜单

    当您单击某个命令时,父菜单的一侧会出现子菜单。作为子菜单控件的命令在其名称右边有一个黑色小箭头。

    7.1添加子菜单

    以下代码示例向“工作表”菜单栏上的“工具”菜单添加名为“NewSub”的新子菜单:

    Sub SubMenu_Create()

    Dim newSub as Object

       Set newSub = CommandBars("Worksheet menu bar").Controls("工具(&T)")

       With newSub

          .Controls.Add(Type:=msoControlPopup, Before:=1).Caption="NewSub"

       End With

    End Sub

    7.2向子菜单添加命令

    以下代码示例向“NewSub”子菜单添加名为“SubItem1”的新命令,然后,当您单击“SubItem1”时,它将运行 Code_SubItem1 宏:

    Sub SubMenu_AddItem()

    Dim newSubItem as Object

       Set newSubItem = CommandBars("Worksheet menu bar") _

       .Controls("工具(&T)").Controls("NewSub")

       With newSubItem

          .Controls.Add(Type:=msoControlButton, Before:=1).Caption = "SubItem1"

          .Controls("SubItem1").OnAction = "Code_SubItem1"

       End With

    End Sub

    7.3禁用子菜单上的命令控件

    以下代码示例禁用您在“向子菜单添加命令”一节中创建的 SubItem 命令:

    Sub SubMenu_DisableItem()

       CommandBars("Worksheet menu bar").Controls("工具(&T)") _

       .Controls("NewSub").Controls("SubItem1").Enabled = False

    End Sub

     

    以下代码示例启用同一 SubItem 命令:

    Sub SubMenu_DisableItem()

       CommandBars("Worksheet menu bar").Controls("工具(&T)") _

       .Controls("NewSub").Controls("SubItem1").Enabled = True

    End Sub

    7.4删除子菜单上的命令

    以下示例删除您在“向子菜单添加命令”一节中在“NewSub”子菜单上创建的 SubItem1 命令:

    Sub SubMenu_DeleteItem()

       CommandBars("Worksheet menu bar").Controls("工具(&T)") _

       .Controls("NewSub").Controls("SubItem1").Delete

    End Sub

    7.5禁用子菜单控件

    以下代码示例禁用您在“添加子菜单”一节中在“工具”菜单上创建的“NewSub”子菜单:

    Sub SubMenu_DisableSub()

       CommandBars("Worksheet menu bar").Controls("工具(&T)") _

       .Controls("NewSub").Enabled = False

    End Sub

    注意:要启用已禁用的控件,请将 Enabled 属性设置为 True

    7.6删除子菜单控件

    以下代码示例删除您在“添加子菜单”一节中在“工具”菜单上创建的“NewSub”子菜单:

    Sub SubMenu_DeleteSub()

       CommandBars("Worksheet menu bar").Controls("工具(&T)") _

       .Controls("NewSub").Delete

    End Sub

     

    八、快捷菜单栏

    快捷菜单是在用户右键单击某个对象时出现的浮动命令栏。快捷菜单栏可以包含与命令栏相同的控件类型,而这些控件的作用也和命令栏上控件的作用相同。在大多数程序中,您无法从程序界面创建或修改快捷菜单,因而必须在运行时创建和修改快捷菜单。

    要获取有关Excel 2002Excel 2003中的快捷菜单的更多信息,请按照下列步骤操作:

    1. 启动 Visual Basic 脚本编辑器。

    2. 在“帮助”菜单上,单击“Microsoft Visual Basic 帮助”。

    3. 在“搜索帮助”框中,键入快捷方式,然后按 Enter

    4. 单击“添加和显示快捷菜单”。

    8.1新建快捷菜单栏

    以下代码示例创建名为“myShortcutBar”的快捷菜单栏:

    Sub Shortcut_Create()

    Dim myShtCtBar as Object

       Set myShtCtBar = CommandBars.Add(Name:="myShortcutBar", _

       Position:=msoBarPopup)

       这显示快捷菜单栏。

       ' 200, 200指的是屏幕上的位置的像素为XY坐标.

       myShtCtBar.ShowPopup 200,200

    End Sub

    注意:由于没有添加任何控件(菜单项或子菜单),因此快捷菜单栏出现时是空的。

    九、快捷菜单

    当您右键单击特定的 Excel 对象时会出现快捷菜单栏。Excel 有很多快捷菜单栏,其中包含各种菜单。您还可以创建自定义快捷菜单栏和自定义内置菜单栏。

    9.1在快捷菜单栏上创建命令

    以下代码示例在“myShortcutBar”快捷菜单栏上创建名为 Item1 的新菜单命令。当您单击“Item1”时,它将运行 Code_Item1 宏:

    Sub Shortcut_AddItem()

    Dim myBar as Object

       Set myBar = CommandBars("myShortcutBar")

       With myBar

          .Controls.Add (Type:=msoControlButton, before:=1).Caption = "Item1"

          .Controls("Item1").OnAction = "Code_Item1"

       End With

       myBar.ShowPopup 200,200

    End Sub

    9.2禁用快捷菜单栏上的命令控件

    以下代码示例禁用您在“创建快捷菜单上的命令”一节中创建的 Item1 命令:

    Sub Shortcut_DisableItem()

       Set myBar = CommandBars("myShortcutBar")

       myBar.Controls("Item1").Enabled = False

       myBar.ShowPopup 200,200

    End Sub

    注意:要启用已禁用的项目,请将 Enabled 属性设置为 True

    9.3删除快捷菜单栏上的命令

    以下代码示例删除“myShortcutBar”快捷菜单栏上的名为 Item1 的菜单命令:

    Sub Shortcut_DeleteItem()

       Set myBar = CommandBars("myShortcutBar")

       myBar.Controls("Item1").Delete

       myBar.ShowPopup 200,200

    End Sub

    9.4删除快捷菜单栏

    删除快捷菜单栏将导致删除所有菜单项。您无法还原已删除的自定义菜单栏。要还原它,必须重新创建该菜单栏及其所有菜单项和子菜单。

    以下代码示例删除您在“在快捷菜单栏上创建命令”一节中创建的“myShortCutBar”快捷菜单栏:

    Sub Shortcut_DeleteShortCutBar()

       CommandBars("MyShortCutBar").Delete

    End Sub

    9.5还原内置快捷菜单栏上的命令

    以下代码示例还原工作表“单元格”快捷菜单栏上的默认命令:

    Sub Shortcut_RestoreItem()

       CommandBars("Cell").Reset

    End Sub

     

    十、快捷菜单上的子菜单

    可以在快捷菜单栏上创建子菜单。当您单击某个命令控件时,父菜单的一侧会出现子菜单。作为子菜单控件的命令在其名称右边有一个黑色小箭头。

    10.1在快捷菜单栏上新建子菜单

    以下示例在工作表“单元格”快捷菜单上添加名为“NewSub”的新子菜单:

    Sub ShortcutSub_Create()

       CommandBars("Cell").Controls.Add(Type:=msoControlPopup, before:=1) _

       .Caption = "NewSub"

        '显示快捷菜单栏。

        ' 200, 200指的是屏幕上的位置的像素为XY坐标。

       CommandBars("Cell").ShowPopup 200, 200

    End Sub

    注意:由于没有添加任何菜单项,因此该子菜单为空。

    10.2在快捷菜单栏的子菜单上创建命令控件

    下面的宏向您在“单元格”快捷菜单上创建的子菜单“NewSub”中添加 SubItem1 命令。然后,当您单击“SubItem1”时,它将运行 Code_SubItem1 宏:

    Sub ShortcutSub_AddItem()

    Dim newSubItem as Object

       Set newSubItem = CommandBars("Cell").Controls("NewSub”)

       With newSubItem

          .Controls.Add(Type:=msoControlButton, before:=1).Caption = "subItem1"

          '点击时subItem1 将运行Code_SubItem1宏。

          .Controls("subItem1").OnAction = "Code_SubItem1"

       End With

       '显示快捷菜单栏。

       ' 200, 200指的是屏幕上的位置的像素为XY坐标

       CommandBars("Cell").ShowPopup 200, 200

    End Sub

     

    10.3禁用快捷菜单上的子菜单项控件

    以下代码示例禁用“NewSub”子菜单上的 SubItem1 命令:

    Sub ShortcutSub_DisableItem()

       CommandBars("Cell").Controls("NewSub") _

       .Controls("subItem1").Enabled = False

       '显示快捷菜单栏。

       ' 200, 200指的是屏幕上的位置的像素为XY坐标

       CommandBars("Cell").ShowPopup 200, 200

    End Sub

    注意:要启用已禁用的项目,请将 Enabled 属性设置为 True

    10.4删除快捷菜单上的子菜单项控件

    以下示例删除“NewSub”子菜单上的 SubItem1 命令:

    Sub ShortcutSub_DeleteItem()

       CommandBars("Cell").Controls("NewSub").Controls("subItem1").Delete

       '显示快捷菜单栏。

       ' 200, 200指的是屏幕上的位置的像素为XY坐标

       CommandBars("Cell").ShowPopup 200, 200

    End Sub

    10.5禁用快捷菜单上的子菜单控件

    以下代码示例禁用“单元格”快捷菜单栏上的“NewSub”子菜单:

    Sub ShortcutSub_DisableSub()

       CommandBars("Cell").Controls("NewSub").Enabled = False

       '显示快捷菜单栏。

       ' 200, 200指的是屏幕上的位置的像素为XY坐标

       CommandBars("Cell").ShowPopup 200, 200

    End Sub

    注意:要启用已禁用的项目,请将 Enabled 属性设置为 True

    10.6删除快捷菜单上的子菜单控件

    以下代码示例删除您在“单元格”快捷菜单栏上创建的“NewSub”子菜单:

    Sub ShortcutSub_DeleteSub()

       CommandBars("Cell").Controls("NewSub").Delete

       '显示快捷菜单栏。

       ' 200, 200指的是屏幕上的位置的像素为XY坐标

       CommandBars("Cell").ShowPopup 200, 200

    End Sub

    展开全文
  • 第二步:打开一个.xlsx文件,点击开发工具下面的加载项,勾选你的代码库 第三步:在选项-》快速访问工具栏中选择宏,选择需要执行的宏操作 还可以修改名称和图标: 然后你的excel就高人一等了。别人都没有,就我有...
  • 在上一讲轻松搞定数字、文本单元格格式错乱问题中,我们已经通过VBA代码快速的重新调整数字、文本格式,在文章结尾也提到了,可以通过在“快速访问工具栏”中添加按钮,一键完成转换为数字或转换为文本。首先,将...
  • 【编辑】工具栏:包含几个在编辑代码时经常使用的菜单项快捷方式的按钮,如代码缩进、设置注释等。 【标准】工具栏:包含几个常用的菜单项快捷方式的按钮,如视图切换、运行过程、显示各窗口的快捷键等。 ...
  • ROTATE", currentPath & "\Image\Rotate.BMP") Dim barDraw As Toolbar = cs.MenuGroup.AddToolbar("我的工具栏") barDraw.AddToolbarButton(-1, "直线", "ID_MyLine") barDraw.AddToolbarButton(-1, "多段线", "ID...
  • 工具栏按钮添加图标和文字

    千次阅读 2007-08-02 21:02:00
    假设工具栏有两个按钮,为每个按钮添加图标和文字1.新建一个单文档程序,将准备好的图标资源(32×32)复制到res文件夹.2.在资源中打开工具栏编辑器,删除(del)原有的位图和多余的按钮(将按钮拖出工具栏即可删除),并为每...
  • Excel2010将宏添加到自定义快速访问工具栏,效果如下 第一步:在工具栏任意处单击鼠标右键,在出现的菜单中选中“自定义功能区” 第二步:在弹出的窗体中,选中快速访问工具栏。第一个下拉框选中“宏”,这样...
  • 本章主要内容:创建自定义函数,创建带参数的过程,使用加载宏工具,小结。
  • Excel通过宏生成自定义菜单和按钮

    千次阅读 2012-04-06 10:19:44
    Sub CreateToolbar(ByVal b As Boolean) If Not b Then End Dim myButton As Variant ... "Please check the VBA code!" MsgBox sMessage, vbCritical, "iFE-VICTALL, Knorr-Bremse" End End Sub
  • EXCEL VBA自定义菜单项

    2009-05-05 17:37:00
    首先要确保要更改的工具栏是可见的,再单击“工具栏选项”箭头指向“添加或删除按钮”或用右击单击工具栏,再单击“自定义”,单击“ 命令”选项卡,在类别中选择“宏”,将“自定义按钮”拖拉到你需要的工具栏的...
  • 自己搜集的,比较全的office图标,拿出来大家分享下
  • 细品RibbonX(47):更改Excel 2007快速访问工具栏按钮的图标资料整理来自于论坛完整版下载地址:http://download.csdn.net/download/nodeman/10264659 Loading ... 下面介绍修改QAT中宏按钮或内置按钮图标的方法...
  • excel中用vba加载宏添加菜单和按钮

    千次阅读 2013-05-30 11:27:39
    ‘auto_open方法 文件...’每次使用运行xla文件 就能添加自己设计好的菜单和按钮 Private Sub Auto_Open()  Set cmbar = Application.CommandBars("Worksheet Menu Bar")  Set Menu = cmbar.Controls.Add(Type:
  • 在做WinForm界面布局时,菜单和工具栏必不可少!但是MenuStrip和ToolStrip不能够对边框的样式直接设置,如果想实现菜单和工具栏之间的分割线就不容易实现;今天查阅了一下msdn找到了一个方法,和大家一块分享,如果...
  • temporary:=True) '在菜最后位置增加一个按钮 With mycontrol .Caption = sMenuItemName '菜单项显示名 称 .OnAction = sMenuItemFunc '左键单击该菜 单项按钮便运行的过程 .Style = msoButtonCaption '只...
  • 关于在 Excel 中如何自定义菜单栏和工具栏,甚至快捷菜单,微软有篇很详细的文档:如何在 Excel 中自定义菜单和菜单栏。我再把自己的经验补充一下:当我们打开 Excel 的时候,我们会看到一个菜单栏,还有根多工具栏...
  •  在Office中通过VBA开发工具栏和菜单,需使用Office提供的CommandBar、CommandBarButton、CommandBarComboBox等对象,这些对象即代表工具栏、工具栏按钮和工具栏下拉框,通过这些对象可编制出各类复杂的工具栏或...
  • 我想在把自己录制的各种宏生成工具栏 并且可以发给别人 让他们可以一键安装工具栏 ...但是自定义工具栏的过程不能录制宏 所以 求问有没有大神可以给点建议 可以编写一个VBA文件可以代替工具栏的自定义过程
  • 本例是使用DELPHI来实现VBA技术,功能包括在WORD中添加菜单及宏,然后实现套红头及清稿功能: unit Unit1; interface uses  Windows, Messages, SysUtils, Variants, Classes, Graphics,...
  • 利用VBA开发数据汇总工具通常在日常工作中总会用到Excel并且经常会遇到Excel将多个表格进行汇总。经过工作中的实践,发现用VBA开发具有一定重复性的功能,能够极大提高工作效率。最近,将本人曾开发的的Excel数据...
  • vba屏蔽Excel中的菜单功能

    千次阅读 2018-10-06 22:17:09
    视图-》工具栏-》编辑,选中代码,然后在编辑的工具栏里“设置注释块和“解除注释块”按钮 Application.EnableCancelKey = xlDisabled '应用程序的EnableCancelKey=完全禁用“取消”键捕获功能 Application....
  • 把工具按钮添加到工具栏之前你需要创建一个新的工具栏,创建新的工具栏需调用Add方法新建一个Toolbar对象并把它添加到Toolbars集合中。要把按钮添加到新的工具栏中,必须调用Toolbar对象中的AddToolbarButton方法,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,303
精华内容 521
关键字:

vba自定义工具栏按钮