使用VBA折叠某些组(不是全部)
我希望有人能帮我找到这里 我有一个庞大的列表,正在使用分组来组织它: 正如您所看到的,我有一个主要的组行,其中包含许多产品。然后,一些产品的配件被归类在该零件下 我想要的是,把所有的配件组都拆下来,只展示产品。下面的代码将扩展未扩展的组,我不希望这样使用VBA折叠某些组(不是全部),vba,excel,grouping,collapse,outline,Vba,Excel,Grouping,Collapse,Outline,我希望有人能帮我找到这里 我有一个庞大的列表,正在使用分组来组织它: 正如您所看到的,我有一个主要的组行,其中包含许多产品。然后,一些产品的配件被归类在该零件下 我想要的是,把所有的配件组都拆下来,只展示产品。下面的代码将扩展未扩展的组,我不希望这样 shtOTP.Outline.ShowLevels RowLevels:=4 shtOTP.Outline.ShowLevels RowLevels:=3 shtOTP.Outline.ShowLevels RowLevels:=2 Active
shtOTP.Outline.ShowLevels RowLevels:=4
shtOTP.Outline.ShowLevels RowLevels:=3
shtOTP.Outline.ShowLevels RowLevels:=2
ActiveWindow.ScrollRow = shtOTP.Range("A3").row 'Go to top of sheet
我试过查看.Outline.Parent
.Outline.SummaryRow
函数,但据我所知,它们没有识别组的“父级”
我可以执行如下循环:
For i = 3 To getLastRow
Dim nextRow As Integer
nextRow = shtOTP.Rows(i+1).row
If nextRow = ParentRow And i.EntireRow.Hidden = False Then
'Collapse the group below the product
End If
Next
但是
如何识别下一个行是否为父行
我如何才能只折叠该组?我想出了一个简短的宏来执行此操作:
Application.ScreenUpdating = False
Dim row As Range
For i = 3 To getLastRow
Set row = shtOTP.Range("A" & i)
If row.EntireRow.Hidden = True Then
'Do nothing
ElseIf row.Value = "SM" Then 'Minor Sub-model row, needs to be collapse
If shtOTP.Rows(i).EntireRow.ShowDetail = True Then
shtOTP.Rows(i).EntireRow.ShowDetail = False
End If
End If
Next
Application.ScreenUpdating = True
为了更好地识别附件,我将“SM”放在了行的A单元格中。对于那些希望显示/隐藏列的人来说,这个答案有点误导。仅仅使用
.EntireColumn
是不够的,您需要使用.Columns
属性,如.EntireColumn.Columns.showdeail=