hatokamome

hatokamomeの趣味・雑記録

Excelセル内の特定のテキストのフォント色を変更するVBAマクロ

機能設計書

概要

この機能は、Excelセル内の特定のテキストのフォント色を変更するVBAマクロです。 ユーザーに対して検索対象のテキストと適用する色のインデックスを入力してもらいます。

仕様

  • ユーザーには、検索対象のテキストと適用する色のインデックスが入力されます。
  • マクロは、アクティブなシートのセルを走査し、定数値のセルのみを対象とします。この際、数値、文字列、論理値、エラー値のデータタイプを持つセルを特定します。
  • セルの値の中で、検索対象のテキストが見つかった場合、そのテキストの一部のフォント色を指定された色のインデックスに変更します。

処理の流れ

  1. マクロが実行されると、テキスト入力用の入力ボックスが表示されます。ここで、検索対象のテキストを入力します。(colorChangeText変数に格納)
  2. 次に、色のインデックスを指定するための入力ボックスが表示されます。デフォルト値として「3」が設定されています。(colorIndex変数に格納)
  3. マクロは、アクティブなシートのセルを走査します。定数値のセルかつ指定されたデータタイプ(数値、文字列、論理値、エラー値)を持つセルのみが対象となります。
  4. セルの値の中で、検索対象のテキストが見つかった場合、その部分のフォント色を指定された色のインデックスに変更します。

ソース

Sub Cell_ChangeFontColor_()
    Dim rng As Range ' セル範囲を表す変数rng
    Dim ptr As Integer ' 文字列内での位置を示す変数ptr
    Const dataType As Long = 23 ' 定数dataType: 23は「数値、文字列、論理値、エラー値」がすべて選択された場合を示す
    Dim colorChangeText As String ' 変更するテキストを格納する変数colorChangeText
    colorChangeText = InputBox("検索対象のテキストを入力してください") ' ユーザーにテキストの入力を求める
    Dim colorIndex As String ' インデックス番号を格納する変数colorIndex
    colorIndex = InputBox("色のインデックスを入力してください", "3", "3") ' ユーザーにインデックス番号の入力を求める(デフォルト値は3)

    For Each rng In ActiveSheet.Cells.SpecialCells(xlCellTypeConstants, dataType) ' アクティブシート内の定数セルをループ処理する
        ptr = InStr(rng.Value, colorChangeText) ' セルの値内で検索対象のテキストを検索し、位置を取得する
        If ptr > 0 Then ' テキストが見つかった場合
            rng.Characters(Start:=ptr, Length:=Len(colorChangeText)).Font.colorIndex = CInt(colorIndex) ' テキストの範囲のフォント色を指定されたインデックス番号に変更する
        End If
    Next rng
End Sub

使用方法

  1. Excelファイルを開きます。
  2. [開発]タブをクリックし、[Visual Basic]を選択します。
  3. [挿入]メニューから[モジュール]を選択して新しいモジュールを作成します。
  4. 作成したモジュール内に、上記のコードを貼り付けます。
  5. マクロを実行するためのトリガーを設定します(ボタン、ショートカットキーなど)。
  6. マクロが実行されると、入力ボックスが表示されます。検索対象のテキストと色のインデックスを入力してください。
  7. マクロがセルを走査し、一致するテキストが見つかった場合は、指定された色のインデックスでフォント色が変更されます。

注意: このマクロはアクティブなシートでのみ動作します。必要に応じてマクロのコードを修正して特定のシートに対して動作させることもできます。

以上が、指定されたVBAマクロの機能設計書です。