怎样使用VBA建立菜单式工作表目录?

2025-10-10 02:25:09

1、首先在开发工具中打开VBA编辑器

怎样使用VBA建立菜单式工作表目录?

2、在单元格区域当中输入一些内容作为例子

怎样使用VBA建立菜单式工作表目录?

3、在VBA编辑器中插入模块

怎样使用VBA建立菜单式工作表目录?

4、在模块当中输入如下代码,然后运行

Sub Auto_Open()

 

Dim BarCtlBtn As CommandBarButton

 

  '*********建立菜单按钮***************

 

    With Application.CommandBars("Worksheet Menu Bar").Controls

 

          .Add(Type:=msoControlButton)

 

          .Style=msoButtonIconAndCaption '有图标和文字

 

          .Caption="建立目录"

 

          .FaceId=481

 

          .OnAction="Create_contents"

 

      End With

 

End Sub

 

Sub Create_contents() '建立目录

 

On Error Resume Next

 

Application.CommandBars("Worksheet Menu Bar").Controls("工作表目录").Delete

 

Dim Sh As Worksheet

 

'添加新菜单

 

With Application.MenuBars(xlWorksheet).Menus.Add("工作表目录") '建立新菜单

 

'新菜单开始新组并添加文字提示

 

Set myMenuBar=CommandBars.ActiveMenuBar

 

Set lastctrl=myMenuBar.Controls(myMenuBar.Controls.Count)

 

  lastctrl.BeginGroup=True                                '开始新组

 

  lastctrl.TooltipText="建立工作表目录,单击可链接至相应工作表。"  '文字提示

 

'添加子菜单

 

For Each Sh In ActiveWorkbook.Sheets

 

 .MenuItems.Add Sh.Name, "into"          '添加子菜单,与工作表数目相同

 

  Next

 

.MenuItems.Add "请选择工作表名", "", , 1          '1表示移至第1个控件之前

 

.MenuItems.Add "刷新菜单目录", "f5"

 

End With

 

Application.CommandBars("Worksheet Menu Bar").Controls("建立目录")

 

.Visible=False

 

Call group

 

End Sub

 

Sub into() '进入工作表

 

  Dim Item As MenuItem

 

  Sheets(Application.CommandBars.ActionControl.Caption).Select

 

  '加选择框

With Application.MenuBars(xlWorksheet).Menus("工作表目录")

 

    For Each Item In .MenuItems

 

      Item.Checked=False

 

Next Item

 

.MenuItems(Application.CommandBars.ActionControl.Caption).Checked=True

 

End With

 

End Sub

 

Sub f5()

 

Call Create_contents

 

End Sub

 

Sub group() '为菜单设置图标

 

Dim Y As Byte

 

Y=Application.CommandBars("Worksheet Menu Bar").Controls("工作表目录").

 

Controls.Count

 

With Application.CommandBars("Worksheet Menu Bar").Controls("工作表目录")

 

.Controls(1).FaceId=176

 

.Controls(2).BeginGroup=True

 

.Controls(Y).BeginGroup=True

 

.Controls(Y).FaceId=481

 

If .Controls(2).Caption="工作表目录" Then .Controls(2).Delete

'  End If

 

End With

 

End Sub

 

Sub auto_close() '关闭工作表时删除菜单

 

Application.CommandBars(1).Reset

 

End Sub

怎样使用VBA建立菜单式工作表目录?

5

怎样使用VBA建立菜单式工作表目录?

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢