Свернуть некоторые группы (не все) с помощью VBA
Я надеюсь, что кто-то сможет помочь мне здесь...
У меня есть огромный список, и я использую группирование для его организации:
Как видите, у меня есть строка Major Group, в которую входит ряд продуктов. Затем, некоторые продукты имеют аксессуары, которые затем группируются по этой части.
То, что я хочу, это свернуть ВСЕ группы аксессуаров ТОЛЬКО продуктов, показывающих. Приведенный ниже код будет расширять группы, которые не раскрываются, я не хочу этого.
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
Но...
КАК мне определить, является ли nextRow родительским?
КАК мне развалиться ТОЛЬКО ЭТО ГРУППА?
1 ответ
Я смог придумать короткий макрос для этого:
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
Я поместил "СМ" в ячейку "А" для аксессуаров, чтобы лучше их идентифицировать.