小技集

トップ > 小技集 > 記事
小技集一覧へ
限定コンテンツ一覧へ



2024年2月9日【ID:0】

メンバー限定

【ExcelVBA】選択した行を自動で色付け


以下のように指定した範囲(セルB2~F13)に関して、選択している行全体を色付けする方法について解説していきます。
こちらで作成したファイルは、記事の最後にて配布しています。

このような仕組みを実現するには、条件付き書式を活用します。
条件付き書式とは、指定した条件を満たしている時に、指定したセルの書式を変更するという機能になります。
色を設定する条件を考えると以下のようになります。

・現在選択している行番号と、対象の行番号が一致する場合

少しイメージが難しいかもですが、例えば、セルB2に以下のような式が設定されているとします。

=現在選択している行番号=ROW(B2)
// 「現在選択している行番号」は、実際には別の数式が入ります。

ROW関数では、引数に指定したセルの行番号を取得することができます。
そのため、2行目のセルのいずれかが選択されている時に、この条件を満たすことになります。

この条件を満たしている時に、対象のセルの背景色を変える必要があるため、この条件の数式を条件付き書式に設定する必要があります。


「現在選択している行番号」を取得するには、CELL関数を活用します。
CELL関数の引数に以下のように指定することで、現在選択しているセルの行番号を取得することができます。

=CELL("row")

複数のセルが選択されている場合は、アクティブになっているセルの行番号が取得されます。

先ほどの条件を表す数式にCELL関数を用いると、以下のようになります。

=CELL("row")=ROW(B2)

この数式を、条件付き書式にて設定していきます。

対象の範囲を選択し、[ホーム]タブの中の[条件付き書式]の[新しいルール]を選択します。

条件付き書式の設定画面にて、[数式を使用して、…]を選択し、先ほどの数式を入力し、書式を設定します。

=CELL("row")=ROW(B2)
// 「B2」はアクティブセルのアドレスにする

このように設定することで、対象の範囲内に関して、選択している行全体を色付けすることができます。

ただ、条件付き書式の設定のみですと、色付けを反映するには、セルを編集するか数式を更新する必要があります。
その理由は、CELL関数で取得される値は、数式が更新されたタイミングに、値が更新されるためです。

そのため、対象の範囲が選択された場合は、自動で数式を更新する仕組みを実現する必要があります。


セルの選択と同時に数式を更新する仕組みを実現するには、シートモジュールを活用します。
[開発]タブの中の[Visual Basic]を選択し、表示された画面(VBE)から対象のシートモジュールを開きます。
※VBEに[プロジェクト]が表示されていない場合は、VBEの[表示]タブより表示することができます。
 「Option Explicit」は設定によっては表示されませんが、表示がなくても問題ありません。

次に、[General]と表示されているリストから、[Worksheet]を選択します。
[Worksheet]を選択することで、Worksheet_SelectionChangeというプロシージャが表示されます。
万が一、別のプロシージャが表示された場合は、右隣りのリストから[SelectionChange]を選択します。

このプロシージャは、該当するシートのセルが選択されたタイミングに自動で実行されます。
そのため、以下のように「数式を更新する」という内容を記述するだけで、セルの選択と同時に数式を更新させることができます。

ただ、この状態ですと、常に数式が更新されることになるため、Excelファイル自体の処理が重くなる原因に繋がります。
そのため、該当する範囲を選択した場合に関してのみ、数式が更新されるように記述する必要があります。

そのためには、以下のように記述します。


続きはIT予備メンバー限定です。

メンバー限定コンテンツになります。




IT予備メンバーページと連携することで内容を確認することができます。

メンバーとは


すでにメンバーの方は、
ログインして連携してから、こちらを更新すると閲覧できます。
※連携しても確認ができない場合は、少し時間を置いてご確認ください。

ログイン(新しいタブ)
※[ログイン]→[設定]→[IT予備-連携]で連携できます


パソコンで開く場合は、記事の最後に「リンクコピー」があるためご活用ください。


メンバー募集
ExcelVBA学習ロードマップ配布 ExcelVBA学習ロードマップ配布





リンクの共有はこちらから行えます。

  リンクコピー Twitter Facebook はてなブックマーク Pocket
トップ > 小技集 > 記事
小技集一覧へ
限定コンテンツ一覧へ


- 人気の記事 -



- メンバー限定 [一覧] -



サイト累計閲覧数

4346498

有料動画講座
(買い切り)

Excel完全制覇


ちょっとした機能 便利ツール
【小技集】

【Excel】瞬時にコピーするショートカット

【Excel】FILTER関数で存在しない場合に好みのデータを表示

【Excel】勤務日数を瞬時に求める

【Excel】色の付いたセルを瞬時に集計

【ExcelVBA】表の先頭にデータを追加する機能(ノーコード)

【ExcelVBA】自作関数(ユーザー定義関数)が自動更新しない

【Excel】選択した範囲内の改行を一括削除

【Excel】空白演算子でマトリックス表から値抽出

【Excel】重複を除いた件数と重複した件数

【Word】指定した位置でページを分ける

【ExcelVBA】人数分の招待状を自動で印刷

【Excel】VLOOKUP関数で列番号を数えずに抽出

【Excel】抽出元のデータへのハイパーリンクを作成

【Excel】同じ形式のグラフを作成

【Excel】ピボットテーブルの意外と知られていない小技3選

【Excel】同じ名前のファイルを同時に開く方法

【Excel】複数の目標値を自動で計算「ソルバー」

【Excel】複数条件で値を抽出

【Excel】改行を保持しながら値を参照する

【Excel・Googleスプレッドシート】セルを囲む薄い線を非表示にする

【Excel】数式の引数で効率的に複数範囲選択

【Excel】入力確定後の移動先

【Excel】ピボットテーブルで集計値の大きい順にする

【Excel】商品ごとの発注単位を考慮したリスト

【Excel】吹き出しの図形の三角の幅を自由に調整する方法





一覧ページへ

トップ > 小技集 > 記事
小技集一覧へ
限定コンテンツ一覧へ