EXCEL VBA 選択セル・選択行・列 ハイライト表示・目立たせる・見やすく・強調)テクニック
EXCEL VBA 選択セル・選択行・列 ハイライト表示・目立たせる・見やすく・強調)テクニック (SelectionChange)
今回説明するのは、選択セルの行列をハイライト表示させる方法を説明いたします。社内でエクセルの表データをプレゼンするときなど、見る側は選択したセルをハイライト表示すると見やすくなります。また、文字入力する際も入力するセルや行と列がハイライト表示すると文字入力も入力しやすくなり、入力ミスも防止出来ると思います。今回の説明では、セルの条件付き書式を使わない方法でWorksheetオブジェクトのSelectionChangeイベントを利用した方法で行います。それでは、サンプルプログラムを交えて順番に説明いたします。
●【EXCEL VBA セルの条件付き書式の設定については、下記を参照して下さい】
●【Worksheet.SelectionChange イベント(Excel)、下記を参照して下さい】(Microsoft社 様)】
https://docs.microsoft.com/ja-jp/office/vba/api/excel.worksheet.selectionchange
EXCEL VBA 選択行のハイライト表示 (目立たせる・見やすく・強調):SelectionChange)
下記のサンプルプログラムは、EXCEL画面でセルを選択して、選択行をハイライト表示させるサンプルプログラムです。社内業務で細かい表を参照する時やデータを入力する時など、入力する行や列を間違えて入力してしまう場合もあります。選択した行をハイライト表示する事で行を間違えて入力する事も少なくなると思います。それでは、サンプルプログラムを交えて順番に説明いたします。
【下記のプログラムは、シートモジュールのイベントプロシージャ「Worksheet SelectionChange」に登録します。】
※ワークシート内で選択範囲を変更した時に発生します。
【プログラムの流れ】
※プログラムの実行については、ワークシート内の選択範囲を変更した時に実行します。
① 画面更新を無効に設定します。
② ワークシートの背景色を全て消します。
③ 現在選択されている選択行の背景色をグリーンにします。
④ 画面更新を有効に設定します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
' ' Private Sub Worksheet_SelectionChange(ByVal Target As Range) '選択行・ハイライト表示 Application.ScreenUpdating = False '画面更新の無効 With Target .Worksheet.Cells.Interior.ColorIndex = 0 'ワークシートの背景色を消します。 .EntireRow.Interior.Color = vbGreen '選択行の背景色をグリーンにする。 End With Application.ScreenUpdating = True '画面更新の有効 End Sub ' |
EXCEL VBA 選択列のハイライト表示 (目立たせる・見やすく・強調):SelectionChange)
下記のサンプルプログラムは、EXCEL画面でセルを選択して、選択列をハイライト表示させるサンプルプログラムです。上記のサンプルは、行をハイライト表示するプログラムですが、今回は、列をハイライト表示するサンプルプログラムです。データを入力する際には、ハイライト表示を行・列で使い分けて利用する事で、入力ミスも少なくなると思います。それでは、サンプルプログラムを交えて順番に説明いたします。
【下記のプログラムは、シートモジュールのイベントプロシージャ「Worksheet SelectionChange」に登録します。】
※ワークシート内で選択範囲を変更した時に発生します。
【プログラムの流れ】
※プログラムの実行については、ワークシート内の選択範囲を変更した時に実行します。
① 画面更新を無効に設定します。
② ワークシートの背景色を全て消します。
③ 現在選択されている選択列の背景色をイエローにします。
④ 画面更新を有効に設定します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
' ' Private Sub Worksheet_SelectionChange(ByVal Target As Range) '選択列・ハイライト表示 Application.ScreenUpdating = False '画面更新の無効 With Target .Worksheet.Cells.Interior.ColorIndex = 0 'ワークシートの背景色を消します。全て消します。 .EntireColumn.Interior.Color = vbYellow '選択列の背景色をイエローにする。 End With Application.ScreenUpdating = True '画面更新の無効 End Sub ' |
EXCEL VBA 選択した行・列同時のハイライト表示 (十字型・クロスハイライト):SelectionChange)
下記のサンプルプログラムは、サンプルプログラム①(選択行のハイライト表示)とサンプルプログラム②(選択列のハイライト表示)を組み合わせたプログラムになります。行列を同時にハイライト表示する事で、十字型のクロスハイライト表示で、現在選択している行・列が瞬時に見やすくなります。それでは、サンプルプログラムを交えて順番に説明いたします。
【下記のプログラムは、シートモジュールのイベントプロシージャ「Worksheet SelectionChange」に登録します。】
※ワークシート内で選択範囲を変更した時に発生します。
【プログラムの流れ】
※プログラムの実行については、ワークシート内の選択範囲を変更した時に実行します。
① 画面更新を無効に設定します。
② ワークシートの背景色を全て消します。
③ 現在選択されている選択行の背景色をマゼンダにします。
③ 現在選択されている選択列の背景色をマゼンダにします。
④ 画面更新を有効に設定します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
' ' Private Sub Worksheet_SelectionChange(ByVal Target As Range) '選択行列・ハイライト表示 Application.ScreenUpdating = False '画面更新の無効 With Target .Worksheet.Cells.Interior.ColorIndex = 0 'ワークシートの背景色を消します。全て消します。 .EntireRow.Interior.Color = vbMagenta '選択行の背景色をマゼンダにする。 .EntireColumn.Interior.Color = vbMagenta '選択列の背景色をマゼンダにする。 End With Application.ScreenUpdating = True '画面更新の有効 End Sub ' |
EXCEL VBA 選択セルのみハイライト表示:SelectionChange)
下記のサンプルプログラムは、EXCEL画面でセルを選択して、選択したセルのみをハイライト表示するサンプルプログラムです。選択セルのみをハイライト表示する事で選択セルをピンポイントで強調する事ができます。それでは、サンプルプログラムを交えて順番に説明いたします。
【下記のプログラムは、シートモジュールのイベントプロシージャ「Worksheet SelectionChange」に登録します。】
※ワークシート内で選択範囲を変更した時に発生します。
【プログラムの流れ】
※プログラムの実行については、ワークシート内の選択範囲を変更した時に実行します。
① 画面更新を無効に設定します。
② ワークシートの背景色を全て消します。
③ 現在選択されているセルの背景色を赤にします。(選択セルのみ)
④ 画面更新を有効に設定します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
' ' Private Sub Worksheet_SelectionChange(ByVal Target As Range) '選択セルのみハイライト表示 Application.ScreenUpdating = False '画面更新の無効 With Target .Worksheet.Cells.Interior.ColorIndex = 0 'ワークシートの背景色を消します。全て消します。 .Interior.Color = vbRed '選択セルの背景色を赤にする。 End With ' Application.ScreenUpdating = True '画面更新の有効 End Sub ' |
EXCEL VBA 指定範囲を指定したハイライト表示 (指定した範囲のみハイライト表示:SelectionChange)
下記のサンプルプログラムは、EXCEL画面でセルを選択して、選択した行列をハイライト表示させるサンプルプログラムです。今回のプログラムでは、ハイライト表示する範囲を指定して範囲指定外については、背景色を変更しません。セルの選択範囲内(セルA4~L23)内のセルを選択した時に選択された行と列をハイライト表示させます。範囲を選択する事で、タイトルなど既に背景色を設定しているセルに影響を与える事もなくハイライト表示させる事が出来ます。それでは、サンプルプログラムを交えて順番に説明いたします。
【下記のプログラムは、シートモジュールのイベントプロシージャ「Worksheet SelectionChange」に登録します。】
※ワークシート内で選択範囲を変更した時に発生します。
【プログラムの流れ】
※プログラムの実行については、ワークシート内の選択範囲を変更した時に実行します。
① ワークシート内のセル(A4~L23)の範囲以外は、このプログラムから抜けます。(ハイライト表示を表示させない)
② 現在の選択されている行番号を代入(行番号を把握します)
③ 現在の選択されている列番号を代入(列番号を把握します)
④ 画面更新を無効に設定します。
⑤ ワークシートのセル(A4~L23)指定範囲内の背景色を消します。(この範囲外の背景色は何もしない)
⑥ 現在の選択行の背景色を緑に塗りつぶします。(指定範囲内のセルA4~L23のみ)
⑦ 現在の選択列の背景色を緑に塗りつぶします。(指定範囲内のセルA4~L23のみ)
⑧ 画面更新を有効に設定します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
' ' Private Sub Worksheet_SelectionChange(ByVal Target As Range) '選択範囲を指定した行列のハイライト表示 ' Dim lRow, lCol As Long If Application.Intersect(ActiveCell, Range("A4:L23")) Is Nothing Then 'セルのA4~L23までの範囲以外は、このプログラムから抜けます。 Exit Sub Else lRow = Target.Row '現在の選択行の行番号を代入 lCol = Target.Column '現在の選択列の列番号を代入 Application.ScreenUpdating = False '画面の更新を停止する。 Range("A4:L23").Interior.ColorIndex = 0 'ワークシート上のセル(A4~L23)の背景色を消す。 Range("A" & lRow & ":L" & lRow).Interior.Color = vbGreen '現在の選択行の背景色を緑に塗りつぶします。(指定範囲内) Range(Cells(4, lCol), Cells(23, lCol)).Interior.Color = vbGreen '現在の選択列の背景色を緑に塗りつぶします。(指定範囲内 Application.ScreenUpdating = True '画面の更新を再開する End If End Sub ' |
また、VBAに関するテクニックや便利な手法などをこのサイトに掲載していきますので、定期的に参照していただけると幸いです。