エクセルVBAで、セルの背景色を他セルへの転用設置する時の面倒設定を解決します。
その都度RGB値を確認入力しなくてもコピペ感覚で背景色を設置することが出来ます。
こんにちは じゅんぱ店長 (@junpa33) です。
エクセルシートでのセルの背景色の設置に関してのお悩みを解決します。
たくさんの美しい色が載っているカラーチャートの中で、気に入った色をエクセルシートのセルに使いたいと思ったことが少なからずあるでしょう。
例えば、” 空色 #a0d8ef RGB( 160, 216, 239 ) ” を気に入って、背景色に設定したいという時はどの様に設定するでしょうか? またそれを、他のセルにも使いたい時はどの様に設定するでしょうか?
最初に設定するときは、RGB要素が分かっているのでそのまま値を入力すればOKでしょう。
問題は、次にその色を他のセルに背景色設定する場合です。
今回は、この面倒くさい設定を少なからず簡単にすることが出来るマクロを作成していきます。
コンテンツ
背景色の設定方法について

通常はエクセルでセルの背景色を設定したい時は、リボンのホームタブで、「塗りつぶしの色」アイコンからエクセルでプリセットされた色のどれかを選択します。
プリセットの色を使用する分にはそんなに手間ではありません。
ところが、好みで選んだ色をを指定したい場合に、 ” 少々、面倒な操作 ” になります。
最初のセル背景色設定
プリセットされていない色を背景色に設定する場合は次のような操作を行います。
例えば「空色」 #a0d8ef RGB( 160, 216, 239 ) ” を背景色に設定するには、
色の設定ウインドウで「ユーザー設定」からR・G・Bを設定します。

使った背景色の今までの再利用方法
同じ「空色」を他のセルに使用する場合は、使った色が履歴(メモリ)で残っている場合は、「最近使用した色」から指定することが出来ます。
既に残っていない時は、最初の設定と同じで「ユーザー設定」からR・G・Bを設定することになります。
更にもし、R・G・B要素を忘れてしまった場合は、その度に、要素を調べるため元に背景色設定したセルに戻って、値をチェックすることになります。
このような作業は、場合によっては結構面倒で ” 気に入った色を使おう ” という気を失せさせてしまい、「手間だしいつものカラーチャート色でいいか」ということにもなります。
背景色の簡単再使用のVBA

エクセルマクロを使えば、好みで決めた色をセルの背景色にしたとしても、
再利用時のその都度の面倒な設定作業をしなくても、簡単に背景色を設置することが出来ます。
簡単再使用マクロの全コード
同じシート内の好きなセルに背景色設定をすることが出来ます。
変数解説
ColorNO・・・背景色のカラー値
ColC ・・・・ 背景色の設定されたセル
CTGC・・・・背景色を設定するセル範囲
Sub 背景色簡単再利用()
Dim ColorNo As Long
Dim ColC, CTGC As Range
'利用したい背景色を選択します。
Set ColC = Nothing
On Error Resume Next
Set ColC = Application.InputBox("利用する背景色の" & _
"セルを選択してください。", _
Title:="背景色セル選択", Type:=8)
If Not ColC Is Nothing Then
ColC.Activate
End If
If Err.Number > 0 Then
MsgBox "キャンセルされました。終了します。"
Exit Sub
End If
On Error GoTo 0
ColorNo = ColC.Interior.Color
'背景色を設定する範囲を選択します。
Set CTGC = Nothing
On Error Resume Next
Set CTGC = Application.InputBox("背景色を設定する" & _
"セル範囲を" & vbCrLf & "指定してください。", _
Title:="背景色セル範囲指定", Type:=8)
If Not CTGC Is Nothing Then
CTGC.Activate
End If
If Err.Number > 0 Then
MsgBox "キャンセルされました。終了します。"
Exit Sub
End If
On Error GoTo 0
CTGC.Interior.Color = ColorNo
End Sub

簡単再使用マクロの使い方
セルの背景色を再使用するエクセルVBAの使い方です。
VBAマクロ「背景色簡単再利用」はお好きなエクセルBOOKにコピペで設置します。

マクロの起動は ” Alt+F8 ” で「背景色簡単再利用」を選択すればOKです。
再利用したい背景色のあるセルを選択します。OKクリックで指定完了です。

背景色を設定するセル範囲を指定します。OKクリックで指定完了です。

2ステップで背景色の再使用が完了します。

まとめ

エクセルで業務を行う中で、背景色設定は頻繁に使用する部類のものではないでしょうか。
よく使う割にはなぜかいつもワンパターン、同じ配色で利用してしまっています。
何故かと考えれば、プリセットカラー以外の背景色設定の不便さではないかと・・・。
ここで紹介した背景色設定マクロであれば、一旦シートに設定した背景色であれば、何色何種類であっても、コピペレベルの2ステップで再利用することが出来ます。
このマクロを「個人用マクロブック(XLSB)」に一旦保存すれば、どんなエクセルファイルに対してでも、後は選んだ好きな色を何度でも背景色として再利用することが出来ます。マクロを” Alt+F8 ” で起動するだけです。

エクセルVBAを独習するのに参考書は欠かせません。 参考書選びは自分に合った「相棒」にできるものを選んでいきたいです。

今回の記事はここまでです。 最後までご覧いただき有難うございました。
<記事内容についての告知>
VBAコードの記述記事においては、その記述には細心の注意をしたつもりですが、掲載のVBAコードは動作を保証するものではりません。 あくまでVBAの情報の一例として掲載しています。 掲載のVBAコードのご使用は、自己責任でご判断ください。 万一データ破損等の損害が発生しても当方では責任は負いません。