Excelで貼り付け後の文字色を自動で変更するVBAマクロの作り方

Excel

Excelでセルに文字を貼り付けた際に、一部の文字だけ自動で色を変えたいケースがあります。通常は入力時の文字色変更は簡単ですが、貼り付け後に自動で色を変更するにはVBAマクロを使う必要があります。

貼り付けイベントを利用する

ExcelではワークシートのWorksheet_Changeイベントを利用すると、セルが変更されたときに自動で処理を実行できます。貼り付けもこのイベントで検知可能です。

具体的には、対象セルを指定し、変更後の文字列の一部に対して文字色を設定するコードを記述します。

部分文字列に色を付ける方法

セル内の特定文字だけ色を変えるには、Charactersオブジェクトを使用します。例えば、セルB1に貼り付けられた「うえお」を赤色にする場合、Characters(Start, Length).Font.Color = RGB(255,0,0)のように設定します。

この方法で、セル全体ではなく、任意の文字範囲だけ色を変えることができます。

マクロの例

以下の例は、B列に文字が貼り付けられた際、3文字目以降を赤色にするサンプルです。

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Me.Range(“B:B”)) Is Nothing Then
Application.EnableEvents = False
Dim txtLen As Long
txtLen = Len(Target.Value)
If txtLen >= 3 Then
Target.Characters(3, txtLen – 2).Font.Color = RGB(255, 0, 0)
End If
Application.EnableEvents = True
End If
End Sub

注意点

貼り付けイベントでは複数セルに同時に貼り付けられる場合があるため、Target.Cellsをループして処理することも検討してください。また、マクロ有効ブックで保存する必要があります。

また、Undo(元に戻す)操作が制限される場合があるため、作業前にバックアップを取ることをおすすめします。

まとめ

Excelで貼り付け後に文字色を自動で変更するには、Worksheet_ChangeイベントとCharactersオブジェクトを組み合わせたVBAマクロを使うのが効果的です。特定の文字範囲だけ色を変えることで、視認性を高めたり、入力内容を強調したりすることが可能です。

コメント

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