【发布时间】:2013-06-25 10:48:43
【问题描述】:
VBA 不是我的专长,但我们开始吧:
我想在一组列被隐藏或显示后触发一个宏。我该如何存档?
我之前的研究结果
我能找到的唯一好的提示是 this MSDN 上的讨论。这里,一个解决方案是用下面的方式起草的:
从 xlsx 文件的根目录创建一个文件 customUI\customUI.xml,内容为
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui" >
<commands >
<command
idMso="ColumnsHide"
onAction="ColumnHide_onAction"/>
<command
idMso="ColumnsUnhide"
onAction="ColumnUnhide_onAction"/>
</commands >
</customUI >
并添加
<Relationship Id="edTAB" Type="http://schemas.microsoft.com/office/2006/relationships/ui/extensibility" Target="customUI/customUI.xml" />
到_rels\_rels.xml。 (这一切使用 Visual Studio 可能要容易得多,但我无法使用微软世界中如此复杂的工具......)现在,可以通过以下方式使用宏:
Public Sub ColumnHide_onAction(control As IRibbonControl, ByRef cancelDefault)
'
' Code for onAction callback. Ribbon control command
'
MsgBox "Ribbon Column Hide"
cancelDefault = False
End Sub
Public Sub ColumnUnhide_onAction(control As IRibbonControl, ByRef cancelDefault)
'
' Code for onAction callback. Ribbon control command
'
MsgBox "Ribbon Column Unhide"
cancelDefault = False
End Sub
这种方法完美地捕捉了列的隐藏和取消隐藏,但不能隐藏和取消组的隐藏。所以,接近,但不完全在那里。
从here 下载可能的idMso 值,我注意到GroupViewShowHide 控件。但是,以与 ColumnsHide 或 ColumnsUnhide 相同的方式使用它不会存档所需的结果。
有什么想法吗?
【问题讨论】:
-
if(cell.outlinelevel > 0) 然后 cell.entirerow.showdetail = true/false
标签: excel excel-2010 vba