VBA 色のついたセルと
別シートで同じ位置のセルに色を付けたい!

Contents

はじめに

EXCELを使っていて、重要なデータのセルを色付けしたけれど、この色付けを別のシートに反映させたいと思ったことはありませんか?私はつい最近、そう思うことがあったのでVBAを用いて解決しました。この記事は、自分の作ったコードを保存するつもりで作成していますが、同じようなコードを書きたい人の役に立てると幸いです。

また、マクロの実装については下の記事を参考にしてください。

マクロを使ってみたいけど、「何をすればいいか分からない」となっていませんか?このサイトでは、画像を使ってEXCELでマクロを使うための準備を手助けします。また、簡単なコードを使って動作の確認も一緒にしていきましょう。

コード作成

例えば、4月の東京の晴れた日のデータと東京の最高気温が20℃以上になった日のデータがあったとします。

このデータから9時に晴れであり、最高気温が20.0℃である日が簡単に分かるようにしたい。ということで、右側のセルの色付けを左側に移していきたいと思います。

Sub Color()
Dim i As Long
Dim j As Long
For i = 1 To 20
    For j = 1 To 20
        If Worksheets("Sheet2").Cells(i, j).Interior.ColorIndex <> xlNone Then
        Worksheets("Sheet1").Cells(i, j).Interior.Color = RGB(255, 204, 153)
        Else
        Worksheets("Sheet1").Cells(i, j).Interior.ColorIndex = xlNone
        
        End If
    Next
Next
End Sub

このコードではfor文を二つ使いセルの色を一つ一つ確認し、色がついていた場合に色を付けるという動作を行っています。また、Cells()は参照するセルの位置を示す関数であり、iが増えると下に移動しjが増えると右へ移動します。そのとき、Worksheetという関数を用いて参照するシートを示しています。

Interiorは背景色を参照する関数です。これに対して文字の色を参照する関数はFontです。さらに、ColorIndexは色の情報を取得する関数であり、xlNoneはColorIndexにおいて無色を示します。これ以外にColorでも色を取得することが出来ますが、無色にあたる値が分からなかったので使用していません。

このコードでは、if文とノットイコール[≠]の意味である<>を用いて、セルが無色でないとき別のシートの同じ位置をRGB(255,204,153)の色にするという命令を出しています。

このコードを実際に起動すると、以下のようになり目的通りに動作することが確認できます。

最後に

基本的なコードですが、誰かの役に立てると幸いです。ぜひ他の記事も見ていってください。

スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク