範囲をグループ化する - Excel VBA プログラミング
PROGRAM
範囲をグループ化する
Excel では、"アウトライン" の "グループ化" という機能を使って、セルを折りたためるようにすることができます。
例えば、次のようなワークシートがあったとします。
このとき、たとえば B 列から D 列までをグループ化することで、それを折りたたんで、表示/非表示を簡単に切り替えることができるようになります。
⇒
このグループ化の設定は、Excel VBA からでも、次のようにして実行することができます。
Call Columns("B:D").Group
このようにすることで、 B 列から D 列までがグループ化されます。
同様に、グループ化を解除するには "Group" メソッドの代わりに "Ungroup" メソッドを呼び出します。
ただしこのとき、グループ化されていない範囲に対してグループ解除を行おうとするとエラーになるので、無条件にグループを解除したいような場合には、次のようにエラーを無視して実行させても良いと思います。
On Error Resume Next
Call Columns("B:D").Ungroup
On Error Goto 0
ただ、上記のようなエラー発生の可能性があるのと、階層でグループ化されている場合にはそのうちの 1 つしかグループが解除されないので、完全にグループを解除したい場合には セルや範囲の値を消去する で紹介した ClearOutline メソッドを使うのが、いちばん簡単かもしれません。
グループされた範囲をマクロで展開する
グループ化された範囲を Excel VBA を使って、開いたり閉じたりすることもできます。
そのためには ExecuteExcel4Macro 関数を使って "SHOW.DETAIL(対象, 位置, 扱い)" という感じの命令を発行します。
対象 | 1 なら、行に対するグループを操作します。 2 なら、列に対するグループを操作します。 |
---|---|
位置 | 対象の行または列のセルの位置を指定します。目的のグループに所属するセルならどれでも構いません。 |
扱い | True なら、グループを展開します。 False なら、グループを折りたたみます。 省略すると、展開されていれば折りたたみ、折りたたまれていれば展開します。 |
これらを踏まえて、上記でグループ化した列に対するグループを展開したい場合には、次のように命令します。
Call ExecuteExcel4Macro("SHOW.DETAIL(2,2,True)")
最初の "2" が列に対するグループの操作を意味し、次の "2" が 2 列目が所属するグループを意味し、最後の "True" でそのグループを展開します。
グループの展開か折りたたみかを省略すれば、現在の状態に合わせて、折りたたまれたり展開されたりします。
[ もどる ]