セル全体の色を変える方法はよく見かけるのですが、セル内の一部の文字列だけ色を変えるマクロはなかなか見かけないので試してみました。
仕様
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. | 環境 | バージョン |
---|---|---|
1 | OS | Windows10 |
2 | Excel | Excel2016 |
以上です。
コメント