gpt4 book ai didi

excel - 同步功能区下拉菜单以显示事件工作表

转载 作者:行者123 更新时间:2023-12-04 20:50:21 25 4
gpt4 key购买 nike

我有一个自定义 Excel 功能区,其中包含一个允许用户切换工作表的下拉菜单。这很好用,但是,它只能以一种方式工作。例如,一种情况是用户在下拉列表中选择工作表名称,然后工作表更改为该名称。但是,如果他们更改工作表选项卡,则下拉列表不会更新。我需要的是始终显示事件工作表的下拉列表,无论用户如何更改它。
我怎样才能做到这一点?
XML

<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui">
<ribbon>
<tabs>
<tab id="tab1" label="Custom Tab" insertAfterMso="TabHome">

<!--Dropdown-->

<group id="Group5" label="Dropdowns">

<dropDown id="dropDown1" label="Dropdown Box" onAction="DDonAction">
<item id="item1" label="Sheet1" imageMso = "HappyFace" />
<item id="item2" label="Sheet2" imageMso = "FontColorMoreColorsDialog" />
<item id="item3" label="Sheet3" imageMso = "NewDistributionList" />
</dropDown>

</group>

</tab>
</tabs>
</ribbon>
</customUI>
VBA
'Dropdowns

Sub DDonAction(control As IRibbonControl, id As String, Index As Integer)

Select Case Index

Case 0
ActiveWorkbook.Sheets("Sheet1").Activate
Case 1
ActiveWorkbook.Sheets("Sheet2").Activate
Case 2
ActiveWorkbook.Sheets("Sheet3").Activate
End Select

End Sub

最佳答案

您需要使用回调过程来更改控件。首先,在标准模块中创建一个全局变量来保存功能区。您将需要它,以便您可以强制功能区自行重置(这就是它调用回调的方式)

Public goRibbon As IRibbonUI
在您的 XML 中,添加一个 onLoad 回调。这会将全局变量设置为功能区。
<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" onLoad = "CustomTabRibbonLoad">
同样在您的 XML 中,将 getSelectedItemID 回调添加到您的下拉列表中。我将其命名为 cb_dd1_getSelectedItemID,但您可以随意命名。
<dropDown id="dropDown1" label="Dropdown Box" onAction="DDonAction" getSelectedItemID="cb_dd1_getSelectedItemID">
保存 XML 并打开工作簿。您可能会收到一些错误,因为您告诉功能区查找不存在的回调过程。将回调过程添加到标准模块。
Sub CustomTabRibbonLoad(ribbon As IRibbonUI)
Set goRibbon = ribbon
End Sub

Sub cb_dd1_GetSelectedItemID(control As IRibbonControl, ByRef itemID As Variant)
itemID = "item" & ActiveSheet.Index
End Sub
第一个只是将您的全局变量设置为功能区。每当功能区失效时,都会调用第二个。它在下拉列表中设置所选项目。由于您的 ID 是 item1、item2 和 item3,我将“item”连接到事件工作表的索引。
在 ThisWorkbook 模块中,添加一个 Sheet_Activate 事件。
Private Sub Workbook_SheetActivate(ByVal Sh As Object)

goRibbon.Invalidate

End Sub
每次用户激活工作表时,功能区都会失效,触发 getSelectedItemID 回调,并使用事件工作表的名称更新下拉列表。

关于excel - 同步功能区下拉菜单以显示事件工作表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65496871/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com