2016-11-18 14 views
0

ヘッダー行を持つワークシートがあり、VBAを使用して行をグループ化する必要があります。 After:=.Cells(1, 1)VBAを使用してグループ化する

何をしなければならない:コードの行をハイライト

無効または非修飾参照

:私はこの構文しかし

Sub GroupItTogether() 
    Dim rLastCell As Range 
    Set rLastCell = ActiveSheet.Cells.Find(What:="*", After:=.Cells(1, 1), _ 
    LookIn:=xlFormulas, LookAt:= _ 
    xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, MatchCase:=False) 
    Range("A2" & rLastCell).Select 
    Selection.Rows.Group 
    ActiveSheet.Outline.ShowLevels RowLevels:=1 
End Sub 

、これはのエラーが生成されますが試みられてきました私はVBAとすべての行(ヘッダーにはない)をグループ化するのですか?コメントパー

EDIT

、私はエラーが削除されますが、これはグループ(ヘッダを除く)すべての行ない、以下に私の構文を編集しました。どのようにこれを使用範囲でグループ化するために更新する必要がありますか?

Sub GroupItTogether() 
    Dim rLastCell As Range 
    Set rLastCell = ActiveSheet.Cells.Find(What:="*", After:=Cells(1, 1), _  
    LookIn:=xlFormulas, LookAt:= _ 
    xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, MatchCase:=False) 
    Range("A2" & rLastCell).Select 
    Selection.Rows.Group 
    ActiveSheet.Outline.ShowLevels RowLevels:=1 
End Sub 
+0

:あなたと列Aのデータを持っている最後の行を取得することができます'.Cells(1,1)'? –

+0

これは、行2から最後に使用された範囲にグループ化するのではなく、2つの行をランダムにグループ化します。 –

+0

あなたは '.Cells(1,1)'に間違っていました。この前に 'With'を書いたときに' .Cells(1,1) 'を使うことができます。次の項目を確認してください。http://www.rondebruin.nl/win/s9/win006.htm – bzimor

答えて

1

あなたはSelectSelectionを使用する必要はありません。 rLastCellの範囲を見つけたら、rLastCell.Rowで範囲の最後の行プロパティを読み取ってグループ化するだけです。

Option Explicit 

Sub GroupItTogether() 

Dim rLastCell As Range 

Set rLastCell = ActiveSheet.Cells.Find(What:="*", After:=Cells(1, 1), _ 
LookIn:=xlFormulas, LookAt:= _ 
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, MatchCase:=False) 

Range("A2:A" & rLastCell.Row).Rows.Group 
ActiveSheet.Outline.ShowLevels RowLevels:=1 

End Sub 

あなたが前にドットを削除する場合はどのような
lastrow = Cells(Rows.Count, "A").End(xlUp).Row 

.Findメソッドを使用する必要はありません)

+0

それはありがとうございます! –

+0

@StarsFlyFreeFromCozyNightsよろしくお願いします:) –

関連する問題