Office
 Computer >> コンピューター >  >> ソフトウェア >> Office

【Excel VBA】フォントの色が赤かどうかを判定して結果を返す6つの方法

Excelで何らかの操作を実行するとき、VBAマクロを使うのが最も効果的で、迅速かつ安全な方法です。この記事では、データセット内の文字の色が赤色かどうかを判定し、VBAを使ってExcel上で特定の結果を取得する方法を、手順を追って詳しく解説します。

練習用ワークブックのダウンロード

この記事で使用している練習用のExcelワークブックは、こちらから無料でダウンロードできます。

VBAでフォントの色が赤かどうかを判定して結果を返す6つの方法

以下のデータセットには、赤色のフォントで表示された値がいくつか含まれています。ここからは、フォントの色が赤である場合に特定の結果を得るための手順を、ステップごとにわかりやすく説明していきます。

【Excel VBA】フォントの色が赤かどうかを判定して結果を返す6つの方法

1. フォントの色が赤なら「Yes」を返す

まずは、フォントの色が赤であれば「Yes」、赤でなければ「No」を返す方法を見ていきましょう。

手順:

  • キーボードで Alt + F11 を押すか、「開発」タブ →「Visual Basic」を選択して、Visual Basic Editor(VBE)を開きます。

【Excel VBA】フォントの色が赤かどうかを判定して結果を返す6つの方法

  • 表示されたコードウィンドウで、メニューバーから「挿入」→「標準モジュール」をクリックします。

【Excel VBA】フォントの色が赤かどうかを判定して結果を返す6つの方法

  • 以下のコードをコピーして、コードウィンドウに貼り付けます。
Function FontColorRed(target As Range)
    Application.Volatile
    If target.Font.Color = 255 Then
    FontColorRed = "Yes"
    Else
    FontColorRed = "No"
    End If
End Function

【Excel VBA】フォントの色が赤かどうかを判定して結果を返す6つの方法

これは実行するSubプロシージャではなく、ユーザー定義関数(UDF)を作成するコードです。そのため、コードを記述した後はメニューバーの「実行」ボタンをクリックするのではなく、「保存」をクリックしてください。

  • 次に、対象のワークシートに戻り、先ほど作成した関数(コード1行目の FontColorRed)を入力します。FontColorRed 関数の括弧内には、判定したいセル参照を渡します(ここでは C5 を指定)。

最終的な数式は次のようになります。

=FontColorRed(C5)

  • Enter キーを押します。

【Excel VBA】フォントの色が赤かどうかを判定して結果を返す6つの方法

C5 のフォントの色が赤であれば「Yes」、そうでなければ「No」が返されます。この例では C5 の文字色が赤ではないため、「No」と表示されました。

  • あとはフィルハンドルを使って下方向にドラッグすれば、残りのセルにも同じUDFを適用でき、赤いフォントのテキストが入ったセルの隣に「Yes」が表示されます。

【Excel VBA】フォントの色が赤かどうかを判定して結果を返す6つの方法

2. フォントの色が赤の場合にカラーコードを返す

続いて、フォントの色をもとにカラーコードを抽出する方法を解説します。

手順:

  • 前の方法と同様に、「開発」タブから Visual Basic Editor を開き、コードウィンドウに標準モジュールを挿入します。
  • コードウィンドウに、以下のコードをコピーして貼り付けます。
Function ColorCode(rng As Range)
    ColorCode = rng.Font.ColorIndex
End Function

【Excel VBA】フォントの色が赤かどうかを判定して結果を返す6つの方法

  • 先ほどと同じ要領で、ワークシートから ColorCode のUDFを呼び出し、引数としてセル参照(例:C5)を渡して Enter を押します。

【Excel VBA】フォントの色が赤かどうかを判定して結果を返す6つの方法

対応するカラーコードが戻り値として返されます。

  • フィルハンドルで下方向にドラッグして残りのセルにも適用すれば、赤いフォントのカラーコードを一括で取得できます。

【Excel VBA】フォントの色が赤かどうかを判定して結果を返す6つの方法

3. フォントの色が赤の場合にカラーインデックスを返す

次に、フォントの色に対応するインデックス番号を返す方法を紹介します。

手順:

  • これまでと同様に、Visual Basic Editor を開いて標準モジュールを挿入します。
  • コードウィンドウに、以下のコードをコピーして貼り付けます。
Function IndexColor(cell As Range)
        IndexColor = cell.Font.Color
End Function

【Excel VBA】フォントの色が赤かどうかを判定して結果を返す6つの方法

  • 同様に、ワークシートから IndexColor のUDFを呼び出し、引数にセル参照(例:C5)を渡して Enter を押します。

【Excel VBA】フォントの色が赤かどうかを判定して結果を返す6つの方法

フォントの色に対応するインデックス番号が戻り値として返されます。

  • フィルハンドルで下方向にドラッグして残りのセルにも適用すれば、赤いフォントのインデックス番号をまとめて取得できます。

【Excel VBA】フォントの色が赤かどうかを判定して結果を返す6つの方法

赤いフォントのテキストが入ったセルは、のカラーインデックスが 255 であるため、「255」が返されます。

4. フォントの色が赤の場合にRGBコードを返す

ここでは、フォントの色をもとにRGBコードを取得する方法を解説します。

手順:

  • これまでと同様に、Visual Basic Editor を開いて標準モジュールを挿入します。
  • コードウィンドウに、以下のコードをコピーして貼り付けます。
Function FontRGB(cell As Range)
    Dim iColorIndex As Long
    Dim iColor As Variant
    iColorIndex = cell.Font.Color
    iColor = iColorIndex Mod 256
    iColor = iColor & ", "
    iColor = iColor & (iColorIndex \ 256) Mod 256
    iColor = iColor & ", "
    iColor = iColor & (iColorIndex \ 256 \ 256) Mod 256
    FontRGB = iColor
End Function

【Excel VBA】フォントの色が赤かどうかを判定して結果を返す6つの方法

  • 同様に、ワークシートから FontRGB のUDFを呼び出し、引数にセル参照(例:C5)を渡して Enter を押します。

【Excel VBA】フォントの色が赤かどうかを判定して結果を返す6つの方法

フォントの色に対応するRGBコードが戻り値として返されます。

  • フィルハンドルで下方向にドラッグして残りのセルにも適用すれば、赤いフォントのRGBコードを一括で取得できます。

【Excel VBA】フォントの色が赤かどうかを判定して結果を返す6つの方法

赤いフォントのテキストが入ったセルは、のRGBコードが 255,0,0 であるため、「255,0,0」が返されます。

5. フォントの色が赤のセルを強調表示する

赤いフォントのテキストが入ったセルを強調表示したい場合は、以下の手順を参考にしてください。

手順:

  • これまでと同様に、Visual Basic Editor を開いて標準モジュールを挿入します。
  • コードウィンドウに、以下のコードをコピーして貼り付けます。
Sub HighlightCell()    
    Set ws = Sheets("Highlight") '対象のワークシートを設定    
    For r = 1 To 104
        For c = 1 To 36
            If (ws.Cells(r, c).Font.Color = 255) Then
                '任意のカラーインデックスを設定
                ws.Cells(r, c).Interior.ColorIndex = 34
            End If
        Next c
    Next r
End Sub

これでコードを実行する準備が整いました。

【Excel VBA】フォントの色が赤かどうかを判定して結果を返す6つの方法

  • キーボードの F5 キーを押すか、メニューバーから「実行」→「Sub/ユーザーフォームの実行」を選択します。サブメニューバーの小さな再生アイコンをクリックしてマクロを実行することもできます。

【Excel VBA】フォントの色が赤かどうかを判定して結果を返す6つの方法

赤いフォントが使われているセルが強調表示されていることが確認できます。

【Excel VBA】フォントの色が赤かどうかを判定して結果を返す6つの方法

6. フォントの色が赤の場合に元の色へ戻す

赤くしたフォントの色を既定の色に戻したい場合は、以下の手順に従ってください。

手順:

  • これまでと同様に、Visual Basic Editor を開いて標準モジュールを挿入します。
  • コードウィンドウに、以下のコードをコピーして貼り付けます。
Sub ChangeFontColor()
    With Application.FindFormat.Font
        .Subscript = False
        .Color = 255
        .TintAndShade = 0
    End With
    With Application.ReplaceFormat.Font
        .Subscript = False
        .ColorIndex = xlAutomatic
        .TintAndShade = 0
    End With
    Cells.Replace What:="", Replacement:="", LookAt:=xlPart, SearchOrder:= _
    xlByRows, MatchCase:=False, SearchFormat:=True, ReplaceFormat:=True
End Sub

これでコードを実行する準備が整いました。

【Excel VBA】フォントの色が赤かどうかを判定して結果を返す6つの方法

  • マクロを実行します。

【Excel VBA】フォントの色が赤かどうかを判定して結果を返す6つの方法

赤いフォントで表示されていた値が、既定のフォント色に戻ります。

まとめ

この記事では、VBAを使ってデータセット内の文字色が赤かどうかを判定し、Excel上で特定の結果を取得する方法を紹介しました。皆さんの業務効率化に役立てていただければ幸いです。このトピックについて質問がある場合は、お気軽にお尋ねください。

あわせて読みたい関連記事

  • Excel VBAで文字列から文字を削除する方法(7選)
  • VBAを使ってExcelの空白行を削除する方法
  • 条件に応じてVBAマクロで行を挿入する方法(4選)
  • VBAでExcelの行数をカウントする方法(5つのアプローチ)
  • セルの値に基づいてVBAで行全体を削除する方法(3選)

  1. Excelで条件付き書式を適用したデータを色でフィルターする方法【初心者向け完全ガイド】

    Excelで作業をしていると、条件付き書式で色分けしたデータを色を基準にフィルターしたい場面によく出くわします。Excelの条件付き書式機能を使えば、さまざまな条件に応じてセルの見た目を変えることができ、その色をもとにデータを絞り込めば、必要な情報だけを簡単に抽出できます。データ量が少なければ手作業でも対応できますが、大規模なデータセットでは手動での絞り込みは時間がかかり、非常に面倒な作業になってしまいます。しかし心配はいりません。Excelにはスプレッドシートに関するほぼすべての問題に対する解決策が用意されています。この記事では、わずか数ステップで条件付き書式で色付けしたデータを色でフィルタ

  2. Excelでセルの色を基準にフィルターする2つの簡単な方法

    Excelでは、目的に応じてさまざまな色でセルを塗りつぶすことがよくあります。ワークシート内で色を使ってデータの種類を区別しており、特定の色が付いたセルだけを抽出・選択したい場合、この記事が役立ちます。ここでは、Excelでセルの色を基準にフィルター処理を行う方法をわかりやすく解説します。 理解を深めながら実際に練習できるよう、サンプルのExcelブックをダウンロードしてご利用ください。 Excelでセルの色別にフィルターする2つの便利な方法 以下の2つの方法では、「フィルター」コマンドと「検索」コマンドを使用して、セルの色を基準にデータを絞り込む手順を学べます。記事内では、異なる色を付け