2017-01-18 5 views
0

を使用して...崩壊いくつかのグループ(すべてではない)私は誰かが私をここに得るのを助けることができるかもしれ願っていVBA

は、私は巨大なリストを持って、それを整理するためにグループ化する使用しています:

enter image description here

私が見ることができるように、私は、それにグループ化された多くの製品を持つメジャーグループの行があります。次に、いくつかの製品には付属品があり、その部分の下にグループ化されています。

私が欲しいのは、表示されている製品だけのアクセサリーグループをすべて崩壊させることです。以下のコードは展開されていないグループを展開しますが、私はそれを望んでいません。私は.Outline.Parent.Outline.SummaryRow機能に探してみましたが、私の知る限り、彼らはグループの「親」を特定していない伝えることができるようにしました

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 

私は次のようなループ行うことができます。

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がparentRowある場合はI識別するにはどうすればよい

を?

HOW私はJUST THAT GROUPを崩壊させますか?

答えて

0

私はこれを行うために、短いマクロを思い付くことができました:

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 

私はアクセサリーがよりよいそれらを識別するための行のAセルに「SM」を配置。

関連する問題

 関連する問題