このページでは以下の画像のようにエクセルシート上にある複数の図形の塗りつぶし色を一括変更する方法をご紹介していきます。
※上の画像は単純な図形だけをつかっていますが、矢印や吹き出しがあっても適用可能です。
手作業でもそれほど時間がかかるわけではありませんが、様々なエクセルシートに同じ処理を適用しようとすると意外と時間がかかると思います。
ぜひ自動化して業務効率化を進めましょう。
それではさっそくやっていきましょう!
VBAの実行環境を構築しておく
今回はエクセルにあらかじめ備わっているVBAというツールをつかって作業をしていきます。
VBAを使ったことがない、という方はまずは以下の記事を参考に環境構築を進めましょう。
図形の塗りつぶし色を変更する方法2つ
それでは今回の本題である、図形の塗りつぶし色を変更する方法を2つご紹介しておきます。
図形の塗りつぶし色を変更する方法①
まずはObjectThemeColorを使用する方法です。
ObjectThemeColorとは、よく使うであろう色をMicrosoftがあらかじめいくつか準備してくれているものだと考えてもらえばOKです。
各色には青=5, オレンジ=6, といった形で番号は割り振られていますので、あなたの好きな色番号を設定すればOKです。
色と番号の一覧については、
「ObjectThemeColor 一覧」
なんかで検索すればいろいろ出てくると思います。
また、Shepes(*)の * 部分はシート上の図形に割り振られた番号を指定します。とりあえず適当な図形を準備してみてShepes(1)を設定して動作確認してみるのが良いでしょう。
図形の塗りつぶし色を変更する方法②
次は色の指定をRGBで行う方法です。
RGBについては知っている方も多いとは思いますが、各設定値と実際の色の関係については以下の記事で解説していますので、御参考ください。
【VBA】セルの背景色&文字色を変更する方法!RGB概念から解説!
Shepes(*)の部分は先ほどと同じですね。
シート上の複数図形の塗りつぶし色を一括変更するVBAコード
それでは先ほど紹介したスキルをつかって冒頭に紹介したようにシート上にある複数図形の塗りつぶし色を一括変更するVBAコードをご紹介します。
Sub change_fill_color()
Dim i As Integer
For i = 1 To ActiveSheet.Shapes.Count
'ObjectThemeColorで指定する場合
ActiveSheet.Shapes(i).Fill.ForeColor.ObjectThemeColor = 7
'RGBで指定する場合
'ActiveSheet.Shapes(1).Fill.ForeColor.RGB = RGB(250, 0, 0)
Next
End Sub
基本的にはActiveSheet.Shapes.Countでシート上にある図形の個数をカウントし、各図形に対して順番に先ほど紹介した方法で塗りつぶし色を変更していっているだけです。
サンプルコートの実行結果確認
それでは先ほどのコートを実行してみましょう。
まずは実行前の状態です。
それでは実行してみます。
※開発タブ⇒マクロ⇒ActiveSheet.Shapes.Countを選択⇒実行で実行します。
問題なくすべての図形が同じ色で塗りつぶされましたね。
おわりに
というわけで今回は、エクセルVBAをつかってシート上にあるすべての図形の塗りつぶし色を一括変更する方法をご紹介しました。
ぜひ業務効率化にご活用ください。
このように、私のブログではエクセルスキルはもちろん、様々なプログラミングスキルを紹介しています。
今は仕事中で時間がないかもしれませんが、ぜひ通勤時間中などに他の記事も読んでいただけると嬉しいです。
⇒興味をもった方は【ヒガサラ】で検索してみてください。
確実にスキルアップできるはずです。
最後に、この記事が役に立ったという方は、ぜひ応援よろしくお願いします。
↓ 応援ボタン
それではまた!
コメント
テスト