没有直接事件触发器来捕获隐藏或取消隐藏列.有一些笨拙的解决方法,在细胞中使用公式,但在使用时感觉像是一个kludge而不是非常灵活.
但是,如果使用Excel 2007或更高版本,则可以通过间接方式捕获此事件.这很整洁,非常灵活.
customUI14.xml(适用于Excel 2010)或customUI.xml(适用于Excel 2007).参考:这个优秀的解决方案是由Andy Pope 在这里提供的(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>
Run Code Online (Sandbox Code Playgroud)
自定义UI编辑器截图:

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
Run Code Online (Sandbox Code Playgroud)