スポンサーリンク
Excelで、シートの見出し色を他のシートと同じものにするマクロを示す。内容の説明は後で書きます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
Sub copySheetTabColor() Dim ws As Worksheet Dim rng As Range Set ws = ActiveSheet On Error GoTo myErr '***Application.InputBoxのType:=8は、セル範囲を選択させるものです。*** Set rng = Application.InputBox("シート見出し色をコピーしたいシートのセルをどこか選択してください", Type:=8) ws.Tab.Color = rng.Parent.Tab.Color'シート見出し色をコピー myErr: Exit Sub End Sub |
このマクロは、コピペしてからExcelの個人用マクロブックに組み込んで使うと良い。
マクロの使い方
このマクロを起動すると、メッセージボックスが出てきて、セル選択が促される。
メッセージどおり、シート見出しの色をコピーしたいシートをどれか選び、さらにそのシートのセルをどこか選んで「OK」ボタンを押せば良い。
下図の例では、Sheet3は見出し色が黄色なのでそれをコピーするため、Sheet3のセルを適当にクリックしている。
これにより、シート見出しの色をコピーしてくることができる。
そもそもシート見出しの色を変更するとは
Excelでは、シート名が書いてある見出し部分を右クリックしてから「シート見出しの色」とすれば、シート見出しの色をあれこれ変更できる。
リボンの「ホーム」タブの「書式」からも行けるし、なんならクイックアクセスツールバーとかに追加しても良いだろう。
私はシート見出しを右クリックするのが直感的で気楽なので、右クリックでやってるが。
シート見出しの色をコピーするのは面倒
この機能は色々と使える場面があるけど、実務で使うことが多いのは、進捗具合によって色分けすることだ。
複数シートがあったらシートごとの担当者を決めるとして、例えば仕掛中なら無色、完了したなら青色にするなどという感じだ。
しかし、青色とか言ったところで、シート見出しの色に設定できる色は沢山あって、正確にはどの色のことか分からないことが多い。
既存のシートの見出しに他人が付けた色を、そのまま真似て自分も付けたいというだけのことが、意外と面倒なのだ。
これがシート見出しでなくセルだったら、話はずっと簡単だ。
セルの塗り潰し色を揃えたいのであれば、単にコピペで良いし、書式のみ貼付けといった技もある。
また、よく分からない色で塗り潰されている場合ならF4キーを上手く使うといったやり方もある。
しかし、シート見出しの色については、そういった技がどれも使えない。
そして、隣のシートと同じ見出し色にしたいというのも、正確な色が分からなくて手間が掛かることが多いのだ。
そこで、今回のマクロを作ってみた。調べてはいないけど、同じ目的を果たすマクロが既にどこかで公開されているかな?
ソースコードのちょっとした解説
お手軽なマクロを提供するのが目的なので、あまりソースコードの中身について細かく書こうとは思わないが、一般にはあまり見かけないと思われる部分のコードについて解説する。
まず、インプットボックスを示すApplication.InputBoxの最後にType:=8と書いてあるやつ。
詳細は個別記事を書いたので、そちらを参照いただきたい。
ソースコードのコメントにも書いてあるように、Type:=8ならセル範囲を専門に選択させることになる。
このTypeについては下記の通りで、1(数値)、2(文字列)、8(セル)だけ使えればよいだろう。
私も正直、覚えてはいなくて、毎回調べ直している。
値 | 型 |
---|---|
0 | 数式 |
1 | 数値 |
2(省略) | 文字列 |
4 | 論理値(True/False) |
8 | セル |
16 | エラー値(#N/Aなど) |
64 | 数値配列 |
そもそもこのマクロは、シート見出しの色をコピーしたいシートを選択させることから始まる。
しかし、シートそのものを選択させるという記述は、別途専用フォームでも作ればともかくお手軽には難しいので、inputboxでセルを選ばせるという形にして間接的にシートを選択させているわけだ。
次に「ws.Tab.Color = rng.Parent.Tab.Color‘シート見出し色をコピー」の部分。
セルを選ばせたら、そのセルは何というシートの中にあるセルなのかを突き止めないといけないのだが、これが意外と難しい。
それを実現するのがParentで、文字通りセル(rng)の親ということだ。
こんなの私も滅多に使わないけどね。
スポンサーリンク