VBA创建一个“录入窗体”工具栏

看了几遍也没看懂这个帖子,http://club.excelhome.net/thread-290608-1-1.html
现在总算理解了 <梦想成真>的示例了.
例如创建一个“录入窗体”工具栏:

Private Sub Workbook_Activate()
    On Error Resume Next
    Application.CommandBars("我的工具栏").Delete
    Dim 子菜单 As CommandBarControl
        
    For m = 1 To 2
    Select Case m
   
    Case 1
   
    Set 主菜单 = Application.CommandBars.Add
    With 主菜单
   
    .Visible = True
    .Name = "我的工具栏"
    .Position = msoBarTop------------改成msoBarLeft 0 命令栏固定在应用程序窗口的左侧。
   
    End With
   
    Case 2
   
    Set 主菜单 = Application.CommandBars("Cell").Controls.Add(Type:=msoControlPopup, before:=1)
    主菜单.Caption = "工具栏"
    End Select
   
    For i = 1 To 1
   
    Set 子菜单 = 主菜单.Controls.Add(Type:=msoControlButton)
   
    With 子菜单
   
    .Caption = Array("录入窗体")(i - 1)
    .Style = msoButtonIconAndCaptionBelow
    .OnAction = Array("录入窗体")(i - 1)
    .FaceId = 284
    .BeginGroup = True
    End With
    Next
    Next
End Sub

Private Sub Workbook_Deactivate()
    On Error Resume Next
    Application.CommandBars("我的工具栏").Delete
    Application.CommandBars("Cell").Controls("工具栏").Delete
End Sub


---------------------

这句代码放在模块内:

Public Sub 录入窗体()
    UserForm1.Show
End Sub

相关内容链接
CommandBars对象模型树信息(已总结)http://club.excelhome.net/viewth ... ighlight=commandbar
如何在自定义工具栏内添加文本输入框 http://club.excelhome.net/viewth ... =%B9%A4%BE%DF%C0%B8
如果用VBA写一段自动加入菜单功能 http://club.excelhome.net/viewth ... p;page=1#pid2385602
xlsExplorerDemo.xls(代码公开) http://club.excelhome.net/viewthread.php?tid=31707&px=0
灵活设计自定义工具栏 http://club.excelhome.net/viewthread.php?tid=44814
使自定义工具栏上的按钮显示(不显示)是否处于选中状态 http://club.excelhome.net/thread-141699-1-546.html
怎样在VBA中将自定义工具栏的图标换成指定的图标? http://club.excelhome.net/viewth ... p;extra=&page=1
如何固定自定义工具栏的位置 http://club.excelhome.net/thread-326819-1-1.html
如何实现自定义工具栏中的分隔线  http://club.excelhome.net/thread-40298-1-1.html
这个文件为什么会自动生成一个工具栏? http://club.excelhome.net/thread-222293-1-1.html
自定义菜单工具栏加载ImageList储藏的图标 http://club.excelhome.net/thread-255940-1-1.html
怎样给自定义菜单加批注  http://club.excelhome.net/thread-253012-1-1.html
遍历不能在thiswork中运行,只能在Sheet1 Sheet2 Sheet3中运行下面程序.

Sub EnaBar()
    Dim myBar As CommandBar
    Debug.Print CommandBars.Count
    For Each myBar In CommandBars
      Debug.Print myBar.Name
        If myBar.Type = msoBarTypePopup Then
            myBar.Enabled = True
        End If
    Next
End Sub
posted @ 2022-03-12 14:09  多见多闻  阅读(952)  评论(0)    收藏  举报