有没有办法在Excel 2010中以编程方式对列或行进行分组/取消组合?
注意:
-
"manual"命令位于Data> Outline> Group / Ungroup中
在excel 2003中 -
,这曾经工作:
someSheet.columns(i).ShowDetail = True / False
但它在2010年不再适用于组(仅适用于数据透视表和小计分组) -
录制宏不会产生任何我可以使用的代码
更确切地说,在Excel 2010中调用 myRange.ShowDetail = True
确实展开了折叠组,但如果该组已经展开,则会引发错误 . 并且无论组是否扩展, ShowDetail
属性都返回True .
3 回答
在Excel 2010中,
ShowDetail
属性始终对组返回true,无论它是折叠还是展开 . 可以使用Hidden
属性:关于不在数据透视表中的行...在Excel 2010中,ShowDetail ALWAYS评估为True并不是我的经验 . 我认为它确实如此,但我没有意识到我需要在摘要行上让这个属性按预期工作 . 其次,我没有意识到默认情况下摘要行是在分组行之下 . 一旦我将该设置更改为在分组行上方具有摘要行(在功能区:数据>大纲,显示大纲框中),折叠/展开的测试变得更加清晰 .
如果我选择的单元格位于摘要行上,则ShowDetail会在显示分组记录时评估为True,如果不显示则评估为False . 我的关键是在摘要行上看到这种行为是这样的 . 默认情况下将孩子/分组行放在上面真的让我感到震惊 .
这是我的宏,当我在摘要行上选择一个单元格时,它会动态扩展和折叠绑定到摘要行的分组记录 . 并且,如果扩展部分,它会使我的单元格在列A中变为粗体 . 如果我选择了多个单元格,则此宏不会运行 .
请注意,工作表保护可防止展开和折叠单元格组 . 我的工作表受到保护,因此我取消保护工作表以展开/折叠,然后重新保护它们 . (可能的改进是我只是取消保护/保护当前的工作表而不是所有工作表 . )
请记住,我将摘要行设置为在分组记录之上 . 如果摘要行低于分组记录(默认值),则偏移行引用必须更改为-1,如下所示:
最好的方法是只更改隐藏范围内单元格的列宽 . 这将自动取消组合选择 .