Excelで変更箇所を赤字に変える方法

Excelを使用していると、変更した箇所だけを赤字にしたいと思うことがあります。表の中で、以前と変更のあった箇所だけをわかりやすく赤字で示したりしたいといった時ですね。その際に、いちいちフォントの色を赤字に選択しなおすのは面倒です。しかし、私の知る限り、Excelの標準機能ではそれを実装することはできません。そこで、VBAを使用します。以下にその方法を示します。簡単にできますので参考にしてください。

 

ステップ1:メニューに[開発]タブを表示する

VBAを使用しますので、メニューに開発タブを表示する必要があります。標準では表示されていない場合がありますので、表示されていないという方は、最初に表示しておきましょう。

これも方法は簡単です。Microsoftの公式ホームページにその説明がありましたので、そちらから引用します。

  1. [ファイル] タブをクリックします。
  2. [オプション] をクリックします。
  3. [リボンのユーザー設定] をクリックします。
  4. [リボンのユーザー設定] および [メイン タブ] の下の [開発] チェック ボックスをオンにします。

[開発] タブを表示する - Office サポート

 

ステップ2:VBEを開く

次に、VBAを記述するためにVBEを開きます。これも方法は簡単です。順番としては、

  1. [開発] タブをクリックします。
  2. 左の方にある [Visual Basic] をクリックします。
  3. 新たなウインドウが表示されます。そのウインドウの左側のメニューに現在開いているExcelのブックと、それに含まれるシートが表示されています。変更を行うシートをダブルクリックしてください。

となります。これによって、VBEを開き、シートを記述する準備を行うことができますした。さて、次はいよいよコードを記述していくこととしましょう。

 

ステップ3:コードを記述する

コードを記述するといっても、非常に簡単なコードです。コピペで構いませんし、意味を理解しようとしても全然難しくありません。以下のコードを、ステップ2で開いた画面に記述しましょう。コピペで構いません。


Private Sub Worksheet_Change(ByVal Target As Range)
    Target.Font.Color = vbRed
End Sub

 このコードを記述したまま、Excelのシートに戻って、セル上の値を変更してみてください。フォントが赤くなるはずです。これで目的は達成できましたね。

 

おまけ:コードの解説と応用

少しコードの解説をしてみます。最初の


Private Sub Worksheet_Change(ByVal Target As Range)

の部分は、Worksheet_Change つまりワークシートに変更があった際に実行されるイベントのことを示しています。このイベントが実行された際に、これより下に記述された内容が実行されます。

ByVal Target As Range の部分では、変更されたセルがTargetという変数に代入されることを示しています。この変数Targetに何らかの処理を行うことで目的を達成できます。

この次のコードである


    Target.Font.Color = vbRed

 では、Target(変更されたセル)のFont(フォント)のColor(カラー)をvbRed(赤色)しろという意味になります。こう考えれば簡単ですよね。

ですので、もし変更後のフォントの色を黄色にしたいといった場合には、vbRed の部分を vbYellow に変更すればいいのです。

また、フォントの色ではなく、背景色を変更したい場合は、Font の部分を Interior に変更すればできます。簡単ですよね。

まとめ

今回は、Excelの標準機能ではなかなか達成できない事柄(変更箇所を赤字に変える)について、簡単なVBAを用いた解決法をご紹介しました。非常に簡単に実装できますし、応用も利きます。何かの時にあれば便利ですので、ぜひ覚えてみてください。