【Excel / 条件書式&VBA】選択している行に色を付ける

当ページのリンクには広告が含まれています。

Excelでカーソルのある行に色を付ける方法があります。

結構使うと便利ですが、使いどころとやり方、注意点などについてちょっとメモ投稿です。

目次

選択しているセルのある行に色を付ける方法は?

やり方としては「条件書式」と「VBA」での設定が必要になります。

後述しますが、VBAを使用するので「マクロ有効ブック」として保存する必要があります。
「マクロ有効ブック」にしたくない場合はこちらの方法は利用できませんので注意です。

条件書式の設定

STEP
メニューから「条件付き書式」を選択し「新しいルール」を選択
STEP
一番下の「数式を使用して書式設定するセルを決定」を選択
STEP
ルール内容の編集画面に下記を入力

色を付ける範囲で内容が変わります。

ちなみに全部大文字でも問題なかったので好きな方で大丈夫です。

行に色を付ける

=CELL(“row”)=ROW()

ROWは行の意味です。

この場合は行だけ変更されます。

列に色を付ける

=CELL(“col”)=COLUMN()

COLUMNは列の意味です(CELLに指定するのは「col」なので注意)

この場合は列のみ変更されます。

ちょっとメモ「Cell()」とは?

「Cell()」は、セルの書式、位置、または内容に関する情報を返す関数です。

今回は「row」と「col」を入れているのでそれぞれ「対象範囲の左上隅にあるセルの行(列)番号」を返すという意味になります。

ちょっとメモ「ROW()」「COLUMN()」とは?

「ROW()」「COLUMN()」は引数として指定された配列の行番号を返します。ちなみに引数は「()」の部分に通常入れます。

今回は「()」に何も指定していないので数式が入力されている行(列)を指します(今いる位置)

行と列の両方(十字になるように)色を付ける場合

この場合は二つの書き方があります。

どちらでやっても問題ありません。好きな方で大丈夫です。

  • 条件書式を行、列、それぞれ分けて作成する
  • ORで一つの条件書式に設定する
条件書式を分けるパターン

=CELL(“row”)=ROW()
=CELL(“col”)=COLUMN()

上記の行と、列の条件書式をそれぞれ両方作成します。

短く済むので、式としては見やすいと思います。

条件書式1つにまとめるパターン

=OR(CELL(“row”)=ROW(),CELL(“col”)=COLUMN())

上記のようにORを使用します。

ちょっと注意することとして「AND」じゃなくて「OR」を使うところです。

「AND」だとターゲットしているセルだけ色が変わります(セルだけがいいのであればこれでOK)

「OR」はもしくは、どちらか、という意味なので「ターゲットしている行、もしくは列のどちらかに該当する範囲のセル」が対象になります。
「AND」の場合は「ターゲットしている行と列の両方が該当するセルのみ」が対象になります。

STEP
色の指定をしてOKを押す

「書式」ボタンを押すと色やフォントの設定ができます。

設定が終わったら保存するために必ずOKを押して終了します。

STEP
「書式ルールの編集画面」でOKを押す

書式ルールの編集画面が閉じると「条件付き書式ルールの管理」画面が開きます。

STEP
適用先を指定する

自動で値が入っているので、意外とうっかりしがちですが、必ず設定を確認、指定します。

最初に範囲選択していれば大丈夫ですが、うっかり防止の為にもここでチェック&指定する方がいいかなと思います

適用先は表であれば、色を変更したい表全体を指定します。

下記の場合はタイトル行は色を変えたくないので「A2:D9」を範囲としています。範囲は固定値なのでアルファベットと数字の前にはそれぞれ「$」を記入します。

適用先ボックスの右の矢印を押すと、範囲指定画面になるのでそちらで設定しても大丈夫です。

VBA側の設定

STEP
開発タブからコードの表示をクリックして開きます

ショートカットで開く場合は「Alt + F11」で開きます。

STEP
左のツリーから対象とするシート名をダブルクリックします
直接コードを入力しちゃってもOK

下記手順を飛ばして、直接この画面に下記コードを貼っちゃってもいいです。

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Application.ScreenUpdating = True
End Sub

イベントって結構いっぱいあるので、プロシージャや引数を丸暗記は難しいので、私は下記手順で作業することが多いです

STEP
右側の(General)のプルダウンから「Worksheet」を選択

選択すると勝手に「Private Sub Worksheet_SelectionChange~」というプロシージャが作成されます。

STEP
SelectionChangeプロシージャ内にコードを記入します

作成されたプロシージャ内に下記コードを記入します。

Application.ScreenUpdating = True

このコードは画面の更新のONとOFFを設定するものです。

今回はTrueとしているので、画面の更新をONにするという意味です。

この設定をしないで条件書式のみを設定した場合は、画面が更新されないので、最初に色の変わった行がずっとそのままになります。

緑色の文字はメモなので書かなくてもOKです。

STEP
開発画面を閉じて動作確認をします(完了)

複数のシートに適用したい場合は?

条件書式は範囲ごとに指定しないといけないので共有はできませんが、VBAの方はシート単位でいちいち書くのは面倒ですね。

その場合「WorkSheet」のイベントではなく「WorkBook」のイベントに記入すると一個で済みます。

STEP
左のツリーから「ThisWorkbook」をダブルクリックして表示します
STEP
右側の(General)のプルダウンから「Workbook」を選択
STEP
最初に勝手に作成される「Private Sub Workbook_Open()」は一旦無視します

勝手に作成されるので消したいのですが、先に消すとまた選択しなおしになるので、一旦スルーします。

後で消します。

STEP
右のプルダウンから「SheetSelectionChange」を選択します

シート側で設定した時は「SelectionChange」でしたが、今回は頭に「Sheet」が付きます。

STEP
選択すると対象のプロシージャが作成されます

作成されたら上の「Private Sub Workbook_Open()」は消しちゃってOKです。

あっても特に問題は無いですが、使わないならサクッと消しちゃっていいです。

STEP
プロシージャ内にコードを入力する

Application.ScreenUpdating = True

貼り付けてもいいですが、入力する場合も下記のように対象が表示されるので、結構簡単ですよ。もしコーディング勉強中なら、手打ちで慣れる方がいいと思います。

全部小文字で入れてもちゃんと頭が大文字になります!ちなみに、途中にタイプミスがあると選択が出てきません

STEP
動作確認をして完了

複数シートで使用しないなら、対象シートのみでもいいかなと思ってシートに設定していますが「複数シートで使うよ」「後で増えたシートにも適用したい」ならブックに設定した方が楽です。

内容的には同じことなので、お好きな方で良いと思います

見落としがちな注意点

上記が正常に動いた場合、動いていない場合にちょっと確認してほしいことメモです。

想定した色にならない、別の条件書式の色になってしまう

複数の条件書式を設定している場合に発生します。

条件書式は優先度があります。もし選択している行は全て同じ色にしたい場合は条件書式の優先度を高くするといいと思います。

逆に、選択中でも別の条件書式を反映したい場合は優先順位を低く設定するようにします。

優先順位を間違ってしまうと、想定通りの表示にならないので複数の条件書式を使う場合は注意が必要です

ブックを保存する場合は「マクロブック」にする必要がある

VBAを使用したのでマクロブックとして保存する必要があります。

この設定前が通常のExcelファイル、拡張子が「xlsx」等の場合、保存する際に「マクロ有効ブックにする必要がある」とメッセージが出るので、それに従って保存します。

もしマクロ有効ブックにしたくない場合は、この機能は使えないので注意です

まとめ

選択している行や列が色付けされることで使いやすさがアップするのでおすすめです。

作業としても特に難しいことは無いので、注意点の部分に留意してお試しください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次