Excel VBA シートの見出し色を他のシートからコピーするマクロ 個人用マクロブックに組み込める

Excel カスタマイズ

スポンサーリンク

Excelで、シートの見出し色を他のシートと同じものにするマクロを示す。内容の説明は後で書きます。

このマクロは、コピペしてからExcelの個人用マクロブックに組み込んで使うと良い。

個人用マクロブックとかについては、ここを展開。

オリジナルのマクロをリボンに追加する方法はこちら

個人用マクロブックについては、こちらこちらで述べています。

 

マクロの使い方

このマクロを起動すると、メッセージボックスが出てきて、セル選択が促される。

メッセージどおり、シート見出しの色をコピーしたいシートをどれか選び、さらにそのシートのセルをどこか選んで「OK」ボタンを押せば良い。

下図の例では、Sheet3は見出し色が黄色なのでそれをコピーするため、Sheet3のセルを適当にクリックしている。

これにより、シート見出しの色をコピーしてくることができる。

そもそもシート見出しの色を変更するとは

Excelでは、シート名が書いてある見出し部分を右クリックしてから「シート見出しの色」とすれば、シート見出しの色をあれこれ変更できる。

リボンの「ホーム」タブの「書式」からも行けるし、なんならクイックアクセスツールバーとかに追加しても良いだろう。
私はシート見出しを右クリックするのが直感的で気楽なので、右クリックでやってるが。

Excel2010以降 クイックアクセスツールバーのカスタマイズ

2018年3月11日

シート見出しの色をコピーするのは面倒

この機能は色々と使える場面があるけど、実務で使うことが多いのは、進捗具合によって色分けすることだ。

複数シートがあったらシートごとの担当者を決めるとして、例えば仕掛中なら無色、完了したなら青色にするなどという感じだ。

しかし、青色とか言ったところで、シート見出しの色に設定できる色は沢山あって、正確にはどの色のことか分からないことが多い。

既存のシートの見出しに他人が付けた色を、そのまま真似て自分も付けたいというだけのことが、意外と面倒なのだ。

これがシート見出しでなくセルだったら、話はずっと簡単だ。

セルの塗り潰し色を揃えたいのであれば、単にコピペで良いし、書式のみ貼付けといった技もある。
また、よく分からない色で塗り潰されている場合ならF4キーを上手く使うといったやり方もある

しかし、シート見出しの色については、そういった技がどれも使えない。
そして、隣のシートと同じ見出し色にしたいというのも、正確な色が分からなくて手間が掛かることが多いのだ。

そこで、今回のマクロを作ってみた。調べてはいないけど、同じ目的を果たすマクロが既にどこかで公開されているかな?

Excel よく分からない色でセルを塗りつぶしたいとき

2018年3月30日

ソースコードのちょっとした解説

お手軽なマクロを提供するのが目的なので、あまりソースコードの中身について細かく書こうとは思わないが、一般にはあまり見かけないと思われる部分のコードについて解説する。

まず、インプットボックスを示すApplication.InputBoxの最後にType:=8と書いてあるやつ。

詳細は個別記事を書いたので、そちらを参照いただきたい。

Excel VBA InputBox(1)InputBoxの基本形

2019年4月17日

ソースコードのコメントにも書いてあるように、Type:=8ならセル範囲を専門に選択させることになる。

このTypeについては下記の通りで、1(数値)、2(文字列)、8(セル)だけ使えればよいだろう。
私も正直、覚えてはいなくて、毎回調べ直している。

0数式
1数値
2(省略)文字列
4論理値(True/False)
8セル
16エラー値(#N/Aなど)
64数値配列
で、Type:=8でセルを選択させる場合、「キャンセル」ボタンを押されるとセル以外のものが選択されたといえる状態になり、この処理は面倒なので「On Error GoTo myErr」というので簡易処理している。

そもそもこのマクロは、シート見出しの色をコピーしたいシートを選択させることから始まる。

しかし、シートそのものを選択させるという記述は、別途専用フォームでも作ればともかくお手軽には難しいので、inputboxでセルを選ばせるという形にして間接的にシートを選択させているわけだ。

次に「ws.Tab.Color = rng.Parent.Tab.Color‘シート見出し色をコピー」の部分。
セルを選ばせたら、そのセルは何というシートの中にあるセルなのかを突き止めないといけないのだが、これが意外と難しい。
それを実現するのがParentで、文字通りセル(rng)の親ということだ。
こんなの私も滅多に使わないけどね。

スポンサーリンク