<スポンサーリンク>

グループの階層(レベル)を確認し、ungroupメソッドが失敗しました。を防ぐ方法

マクロVBA
この記事は約2分で読めます。
コピーボタン
記事のタイトルとURLをコピー
<スポンサーリンク>

グループ化されていない行や、列をungroupすると、
VBAでエラーになります。

今回は、その対処法を紹介したいと思います。

スポンサーリンク

グループの階層(レベル)を確認し、ungroupメソッドが失敗しました。を防ぐ方法

ungroupメソッドが失敗しました。

となるのは、

グループ化されていない行や列をグループ解除しようとした場合

となります。ですので、

グループ解除をするためには、グループ化されているか先に判断する必要があります。

そんな時に使えるのが、

行.outlinelevel

となります。

簡単にプログラムを作って、
A列に、レベルを表示させるプログラムを作成してみました。

Sub GROUP確認()

    For I = 1 To 10
        A = Cells(I, 20).EntireRow.OutlineLevel
        Cells(I, 1) = "行" & I & "のレベルは" & A
    Next

End Sub

結果は下記の通り、きちんとレベルが表示されていることがわかります。

ちなみに、グループ化されていない行がレベル1となりますので、
ungroupのエラーを防ぐためには、IF文を使って、

IF 行.outlinelevel>=2 THEN
 行.ungroup
END IF

とする必要があります。

また、

 行.clearoutline

を使うことで、グループ化をすべて解除することが可能ですので、
合わせて知っておくといいかと思います。

コメント欄

<スポンサーリンク>
タイトルとURLをコピーしました