Excelのセル内の指定した位置から(n文字目,m文字)文字色を変更するVBAのサンプルコード

記事内に広告が含まれています。

セル全体の色を変える方法はよく見かけるのですが、セル内の一部の文字列だけ色を変えるマクロはなかなか見かけないので試してみました。

仕様

Excelのセル内の一部の文字列の色を、VBAコードによって変更してみます。

※以下は実行後のイメージ画像です。

Charactersオブジェクトに開始位置と文字数を指定すると実現できるのですが、Charactersオブジェクトの動作をイメージできるように、様々なパターンで実装してみます。

ソースコード

基本的な構文は下記のとおりです。

Cells(行,列).Characters(Start:=num1, Length:=num2).Font.Color = RGB(numR,numG,numB)

これを使って、様々なパターンのサンプルコードを記述しました。

Option Explicit

Sub ボタン1_Click()
    '2文字目から3文字を色替え (カラーインデックス指定)
    Range("B2").Characters(Start:=2, Length:=3).Font.ColorIndex = 3 'red
    
    '3文字目から4文字を色替え (RGB指定)
    Range("B3").Characters(Start:=3, Length:=4).Font.Color = RGB(0, 0, 255)
    
    '色替えするセルを範囲指定
    Range("B5:B7").Characters(Start:=3, Length:=4).Font.Color = RGB(0, 255, 0)
    
    'ループでスタート位置をずらす
    Dim i As Integer
    For i = 1 To 5
        Cells(9 + i, 2).Characters(Start:=i, Length:=2).Font.Color = RGB(0, 255, 255)
    Next
    
End Sub

もちろんRangeはCellsに変えてもいいですし、CellsはRangeに変えても良いです。

テスト実行

こちらをテスト実行してみます。

実行前

実行前は、何も色付けされていません。

実行後

実行すると、セル内の文字に色付けされました。

ソースコードの各コメントと、実行結果の各色が対応しているので参考になるかと思います。

参考情報

環境

下記の環境で作成・実行しております。

No.環境バージョン
1OSWindows10
2ExcelExcel2016
環境一覧

以上です。

コメント

タイトルとURLをコピーしました