使用 VBA 折叠一些组(不是全部)

Collapse Some Groups (Not All) Using VBA

我希望有人可以帮助我来到这里...

我有一个很大的列表,我正在使用分组来组织它:

如您所见,我有一个主要组行,其中包含许多产品。然后,一些产品有配件,然后分组在该部分下。

我想要的是仅折叠展示产品的所有配件组。下面的代码将扩展未扩展的组,我不希望这样。

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 函数,但据我所知,它们没有识别出该组的 "parent"。

我可以像下面这样循环:

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 单元格中,以便更好地识别它们。