目次
このチュートリアルでは、Excelで選択したセルの行と列を動的にハイライトする3つの異なる方法について説明します。
大きなワークシートを長時間見ていると、カーソルがどこにあって、どのデータを見ているのかわからなくなることがあります。 自分が今どこにいるのかを正確に把握するために、Excelがアクティブな行と列を自動的にハイライトするようにしましょう!当然、ハイライトはダイナミックで、他のセルを選択するたびに変わる必要があります。 本来、これを実現することが目的なんです。
VBAで選択したセルの行と列を自動でハイライトする
この例では、VBAでプログラム的にアクティブな列や行をハイライトする方法を紹介します。 これには SelectionChange のイベントです。 ワークシート オブジェクトを作成します。
まず、シート上の全セルの背景色をクリアするために ColorIndex を0に設定し、アクティブセルの行と列全体をハイライトします。 ColorIndex プロパティに、希望する色のインデックス番号を指定します。
Private Sub Worksheet_SelectionChange( ByVal Target As Range) If Target.Cells.Count> 1 Then Exit Sub Application.ScreenUpdating = False 'すべてのセルの色を消す Cells.Interior.ColorIndex = 0 With Target '選択したセルの行と列を強調表示する .EntireRow.Interior.ColorIndex = 38 .EntireColumn.Interior.ColorIndex = 24 End With Application.ScreenUpdating = True End Subコードのカスタマイズ
もし、コードを自分用にカスタマイズしたい場合は、これらの小技が役に立つかもしれません。
- このサンプルコードでは、上のGIFで示された2つの異なる色(行のカラーインデックス38と列のカラーインデックス24)を使用しています。 To ハイライトカラーを変更する の場合は、任意のColorIndexコードに置き換えてください。
- で行と列の色を取得する。 どうどう の場合、両方に同じカラーインデックス番号を使用します。
- のみを強調表示する場合 アクティブロー この行を削除するか、コメントアウトしてください。 .EntireColumn.Interior.ColorIndex = 24
- のみを強調表示する場合 どうさくじょう この行を削除するか、コメントアウトしてください。 .EntireRow.Interior.ColorIndex = 38
ワークシートにコードを追加する方法
特定のワークシートのバックグラウンドで静かにコードを実行させるには、通常のモジュールではなく、そのワークシートに属するコードウィンドウに挿入する必要があります。 これを行うには、次の手順を実行します。
- ワークブックで、Alt + F11キーを押して、VBAエディタを表示させます。
- 左側のプロジェクトエクスプローラには、開いているすべてのワークブックとそのワークシートのリストが表示されます。 表示されていない場合は、Ctrl + Rショートカットでプロジェクトエクスプローラウィンドウを表示させます。
- 対象のワークブックを探し、その中の Microsoft Excel オブジェクト フォルダで、ハイライトを適用したいシートをダブルクリックします。 この例では、シートが シート1 .
- 右側のコードウィンドウに、上記のコードを貼り付けます。
- として保存してください。 マクロが使えるワークブック (.xlsm)です。
メリット : すべてがバックエンドで行われるため、ユーザー側での調整やカスタマイズは不要です。
欠点 しかし、この手法には2つの欠点があり、特定の状況下では適用できない。
- コード 背景色をクリアにする 色付きのセルがある場合は、この方法を使用しないでください。
- このコードを実行する 輪止め アンドゥ機能 を押すと、Ctrl + Z で誤った操作を取り消すことができなくなります。
VBAを使わずにアクティブな行と列をハイライトする
VBAを使わずに選択した行や列をハイライトする方法として、Excelの条件付き書式があります。 これを設定するには、以下の手順を実行してください。
- ハイライトを行うデータセットを選択します。
- について ホーム タブで スタイル グループをクリックします。 新ルール .
- での 新しい書式ルール ダイアログボックスで 数式を使用して、どのセルをフォーマットするかを決定する .
- での この式が真である場合の値のフォーマット ボックスに、以下の計算式のいずれかを入力してください。
を強調するために アクティブロー :
=CELL("row")=ROW()です。
を強調するために どうさくじょう :
=CELL("col")=COLUMN()です。
を強調するために 有効な行と列 :
=OR(CELL("row")=ROW(), CELL("col")=COLUMN()))
すべての数式は、CELL 関数を使用して、選択されたセルの行と列の番号を返します。
- をクリックします。 フォーマット ボタンを押すと、切り替わります。 塗りつぶし タブをクリックし、好きな色を選択します。
- OKを2回クリックして、両方のダイアログウィンドウを閉じます。
より詳しい説明が必要だと感じた場合は、「数式を使った条件付き書式ルールの作り方」をご覧ください。
この例では、列と行を同じ色にするためにOR式を選択しました。 その方が手間がかからず、ほとんどの場合に適しています。
残念ながら、この解決策はVBAの解決策ほど素晴らしいものではありません。 シートの再計算を手動で行う (Excelのデフォルトでは、ワークシートの再計算は新しいデータの入力または既存のデータの編集後にのみ行われ、選択範囲が変わったときには行われません。 そこで、別のセルを選択すると、何も起こりません。 F9キーを押すと、シートが更新され、数式が再計算され、ハイライトが更新されます。
を実行するたびにワークシートが自動的に再計算されるようにするには、次のようにします。 SelectionChange イベントが発生した場合、前の例で説明したように、この簡単なVBAコードをターゲットシートのコードモジュールに配置することができます。
Private Sub Worksheet_SelectionChange( ByVal Target As Range) Target.Calculate End Subこのコードでは、選択した範囲/セルを強制的に再計算し、その結果、CELL関数が更新され、条件付き書式が変更を反映するよう強制します。
メリット : 前の方法とは異なり、手動で適用した既存の書式設定に影響を与えません。
欠点 : Excelのパフォーマンスを悪化させる可能性があります。
- 条件付き書式を有効にするには、選択範囲が変わるたびにExcelに計算式を再計算させる必要があります(F9キーによる手動、またはVBAによる自動)。 強制的に再計算させると、Excelの動作が遅くなることがあります。 このコードはシート全体ではなく選択範囲を再計算するので、大きなワークブックや複雑なワークブックでのみマイナスの効果が現れる可能性が高いでしょう。
- CELL関数はExcel2007以降で利用可能なので、それ以前のバージョンではこの方法は使えません。
条件付き書式とVBAを使用して、選択した行と列をハイライト表示する
ユーザーが移動するたびにワークシートを再計算するのではなく、VBAを使ってアクティブな行と列の番号を取得し、条件付き書式を使用してその番号をROW()関数やCOLUMN()関数に提供するのです。
そのために必要な手順は以下の通りです。
- ワークブックに新しい白紙のシートを追加し、名前を付けます。 ヘルパーシート このシートの唯一の目的は、選択されたセルを含む行と列を表す2つの数値を保存することであり、後でシートを安全に隠すことができるようにすることです。
- ハイライト表示を行いたいワークシートのコードウィンドウに、以下のVBAを挿入してください。 詳しい操作方法は、最初の例を参照してください。 Private Sub Worksheet_SelectionChange( ByVal Target As Range) Application.ScreenUpdating = False Worksheets( "Helper Sheet" ).Cells(2, 1) = Target.Row Worksheets( "Helper Sheet" ).Cells(2, 2) = Target.Column Application.ScreenUpdating= True End Sub
上記のコードでは、アクティブな行と列の座標を「ヘルパーシート」という名前のシートに配置しています。 手順1でシート名を変えた場合は、コード内のワークシート名を適宜変更してください。 行番号はA2、列番号はB2に書き込まれています。
- 対象となるワークシートで、データセット全体を選択し、以下の数式で条件付き書式ルールを作成します。 ステップバイステップのガイダンスは、上記の例で説明されています。
そして次に、主な3つのユースケースを詳しく説明します。
アクティブな行を強調表示する方法
今カーソルが置かれている行を強調表示するには、この数式で条件付き書式ルールを設定します。
=ROW()='ヘルパーシート'!$A$2
その結果、ユーザーは現在どの行が選択されているかを明確に知ることができます。
アクティブな列を強調表示する方法
選択した列をハイライトするには、次の式を使用して列番号をCOLUMN関数にフィードします。
=COLUMN()='ヘルパーシート'!$B$2
また、縦方向のデータも、ハイライト表示された列があれば、そこに集中することができ、快適に読むことができます。
アクティブな行と列を強調表示する方法
選択した行と列の両方を自動的に同じ色でシェーディングするには、ROW()とCOLUMN()関数を1つの数式にまとめます。
=OR(ROW()='Helper Sheet'!$A$2, COLUMN()='Helper Sheet'!$B$2)
関連するデータがすぐにフォーカスされるので、読み間違いが防げます。
メリット 最適化されたパフォーマンス、すべてのExcelバージョンで動作します。
欠点 : 最長セットアップ
以上、エクセルで選択したセルの列と行をハイライトする方法でした。 読んでいただきありがとうございました!来週のブログでお会いできるのを楽しみにしています。
練習用ワークブック(ダウンロード
アクティブな行と列をハイライト表示する(.xlsmファイル)