Kato Ryo Official Site

抽象度とエネルギーを上げる

【Excel VBA】指定した特定の範囲だけをグループ化する

 
この記事を書いている人 - WRITER -
Pocket

Excel VBAで、アウトライン設定をしている行や列のうち、指定した特定の行や列だけ、アウトラインを展開したり、折り畳んだりしたいと思うことは良くあると思う。そこで調べてみたのだが、よく使われるであろう、Outline.showLevels メソッドでは、行・列のレベル(=折り畳みの深さ?)でしか、展開や折り畳みの指定ができないようだ。(なお、アウトラインの展開・折り畳みはマクロの記録機能を使っても記録されない。)

別のやり方を探していたところ、ExecuteExcel4Macro を使った方法があることがわかった。ExecuteExcel4Macro を使うということは、古いマクロを使うということなので、お勧めのやり方とはいえないのは確かだが、他にやり方がなさそうなので、やむなしである。

 

SHOW.DETAIL(対象, 位置, 扱い)
対象:1 → 行に対するグループを操作  2 → 列に対するグループを操作
位置:対象の行または列のセルの位置を指定。目的のグループに属するセルならばどれでも良い。
扱い:TRUE → グループを展開  FALSE → グループを折り畳む(省略した場合は、展開されていれば折り畳み、折り畳まれている場合は展開する)

 

例えば以下の画像のようにアウトラインを設定している時、1~5行目のアウトラインだけを閉じたい時は

Call Application.ExecuteExcel4Macro(“SHOW.DETAIL(1,1,FALSE)”)

とすればよい。

なお、この場合、対象「1」(行に対するグループを操作)、位置「1」と設定しているので、位置の「1」は1行目と解される。位置を「2」(2行目)としても、同じ動作をする。

 

この記事を書いている人 - WRITER -

- Comments -

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

Copyright© 抽象度とエネルギーを上げる , 2017 All Rights Reserved.