gpt4 book ai didi

excel - 隐藏行或列时在 Excel VBA 中触发事件

转载 作者:行者123 更新时间:2023-12-04 19:52:41 24 4
gpt4 key购买 nike

有没有办法在我手动隐藏行/列时在 Excel VBA 中触发事件(调用子)?

当隐藏在特定工作表中时,我希望同一行隐藏在所有后续工作表中。

这可能吗?

提前致谢

最佳答案

没有直接的事件触发器来捕获隐藏或取消隐藏的列。有一些笨拙的变通方法,在单元格中使用公式,但使用起来感觉很笨拙,而且不太灵活。

但是,如果您使用 Excel 2007 或更新版本,则可以通过间接方式捕获此事件。这很简洁而且非常灵活。

  1. 修改功能区 XML(如果存在):您需要能够修改功能区的 customUI14.xml(适用于 Excel 2010)或 customUI。 xml(适用于 Excel 2007)。
  2. 创建自定义功能区 UI XML 文件(如果不存在):您可以使用来自 http://www.rondebruin.nl/win/s2/win001.htm 的 Ron De Bruin 出色的自定义 UI 编辑器(这在许多 Microsoft 官方示例中也得到了认可)。
  3. 用于捕获事件的 XML 更改:在自定义 UI 编辑器中打开 Excel 文件并添加 XML 代码,如下所示。这将使列隐藏或取消隐藏事件触发代码中的宏。
  4. 执行您的操作的 VBA 代码:添加下面列出的代码以在捕获事件后采取操作。

引用: 这个优秀的解决方案由 Andy Pope 提供 here (MSDN 链接)。

自定义 XML 代码:

<customUI  xmlns="http://schemas.microsoft.com/office/2006/01/customui" >
<commands >
<command
idMso="ColumnsHide"
onAction="Column_Hide_Macro"/>
<command
idMso="ColumnsUnhide"
onAction="Column_UnHide_Macro"/>
</commands >
</customUI>

自定义 UI 编辑器截图: enter image description here

VBA代码:

Sub Column_Hide_Macro(control As IRibbonControl, ByRef CancelDefault)
MsgBox ("You have hidden a column")

' You may put your code here
' to check if your monitored row is hidden

CancelDefault = False ' This enables the default action to continue
End Sub

Sub Column_UnHide_Macro(control As IRibbonControl, ByRef CancelDefault)
MsgBox ("You have unhidden a column")

' You may put your code here
' to check if your monitored row is unhidden

CancelDefault = False ' This enables the default action to continue
End Sub

关于excel - 隐藏行或列时在 Excel VBA 中触发事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24777074/

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