前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >自定义功能区示例:创建用于工作表导航的下拉列表

自定义功能区示例:创建用于工作表导航的下拉列表

作者头像
fanjy
发布2023-10-31 18:42:03
2480
发布2023-10-31 18:42:03
举报
文章被收录于专栏:完美Excel完美Excel

标签:VBA,自定义功能区

我们可以自定义功能区,在上面设置我们想要的功能,从而方便我们对工作表或工作簿的操作。本文的示例如下图1所示,在功能区中添加一个自定义的选项卡,然后再该选项卡中添加带有下拉列表的一个自定义组,用于从下拉列表中选择工作表,从而快速导航到该工作表,这对于工作簿中有大量工作表且要快速找到相应的工作表的用户来说,非常有用。

图1

假设该工作簿名称为CustomUIDropdown.xlsm,使用Custom UI Editor for Microsoft Office打开该工作簿,在其中输入代码:

代码语言:javascript
复制
<customUI  xmlns="http://schemas.microsoft.com/office/2009/07/customui" onLoad="RibbonOnLoad">
 <ribbon >
   <tabs >
     <tab id="Tab1" insertBeforeMso="TabHome" label="My Menu">
       <group id="grpDropDowns" label="Worksheet Navigation">
         <dropDown
            id="SheetNavigation"
            label="Navigate to:"
            sizeString="WWWWWWWWWW"
            supertip="Go to Worksheet Selected in Dropdown "
            getItemCount="getItemCount"
            getItemLabel="getItemLabel" 
            getSelectedItemIndex="GetSelectedItemIndexDropDown"
            onAction="onAction"/>
       </group >
     </tab >
   </tabs >
 </ribbon >
</customUI >

验证无误后,保存并关闭Custom UI Editor for Microsoft Office。

在Excel中打开CustomUIDropdown.xlsm,打开VBE,插入一个标准模块,输入下面的代码:

代码语言:javascript
复制
Dim Rib As IRibbonUI
Private mwkbNavigation As Workbook
'Callback for SheetNavigation getItemCount
Sub getItemCount(control As IRibbonControl, ByRef returnedVal)
 Dim lCount As Long
 Dim wksSheet As Worksheet
 Set mwkbNavigation = ThisWorkbook
 For Each wksSheet In mwkbNavigation.Worksheets
   If wksSheet.Visible = xlSheetVisible Then
     lCount = lCount + 1
   End If
 Next wksSheet
 returnedVal = lCount
End Sub
'Callback for SheetNavigation getSelectedItemIndex
Sub GetSelectedItemIndexDropDown(control As IRibbonControl, ByRef index)
 index = ActiveSheet.index - 1
End Sub
'Callback for SheetNavigation getItemLabel
Sub getItemLabel(control As IRibbonControl, index As Integer, ByRef returnedVal)
 If mwkbNavigation.Worksheets(index + 1).Visible = xlSheetVisible Then
   returnedVal = mwkbNavigation.Worksheets(index + 1).Name
 End If
End Sub
'Callback for SheetNavigation onAction
Sub onAction(control As IRibbonControl, id As String, index As Integer)
 Dim sSheetName As String
 sSheetName = mwkbNavigation.Worksheets(index + 1).Name
 mwkbNavigation.Worksheets(sSheetName).Activate
End Sub
Sub RibbonOnLoad(ribbon As IRibbonUI)
 Set Rib = ribbon
End Sub

保存并关闭该工作簿,然后重新打开该工作簿,即可以看到更新后的自定义功能区界面。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2023-10-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 完美Excel 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档