Excel VBAでフォント色を保持して複数範囲をコピーする方法

Visual Basic

Excelでセルの内容を別シートにコピーする際、数式だけではフォントの色(赤字・黒字など)を保持できません。VBAを使うと、文字色をそのまま反映してコピー可能です。この記事では、初心者でも理解できるように具体例を交えて解説します。

VBAでコピーする際の基本手順

VBAでは、RangeオブジェクトのTextプロパティで文字列を取得し、Font.Colorで色を取得して別シートに反映できます。コピー元のセルごとに文字列と色を設定する方法が基本です。

例えば、Sheet1のB5:B19の値と色をSheet2のB3:B17にコピーする場合は、Forループを使って1セルずつ処理します。

複数範囲のコピー例

複数範囲をコピーする場合、各範囲ごとにループ処理を行います。以下の例では、4つの範囲をそれぞれ対応するSheet2のセルにコピーします。

例:

Sub CopyWithColor()
 Dim i As Integer
 'B列コピー
 For i = 0 To 14
   With Sheets("Sheet2").Range("B3").Offset(i, 0)
     .Value = Sheets("Sheet1").Range("B5").Offset(i, 0).Value
     .Font.Color = Sheets("Sheet1").Range("B5").Offset(i, 0).Font.Color
   End With
 Next i
 'H列コピー
 For i = 0 To 14
   With Sheets("Sheet2").Range("B19").Offset(i, 0)
     .Value = Sheets("Sheet1").Range("H5").Offset(i, 0).Value
     .Font.Color = Sheets("Sheet1").Range("H5").Offset(i, 0).Font.Color
   End With
 Next i
 'N列コピー
 For i = 0 To 14
   With Sheets("Sheet2").Range("P3").Offset(i, 0)
     .Value = Sheets("Sheet1").Range("N5").Offset(i, 0).Value
     .Font.Color = Sheets("Sheet1").Range("N5").Offset(i, 0).Font.Color
   End With
 Next i
 'T列コピー
 For i = 0 To 14
   With Sheets("Sheet2").Range("P19").Offset(i, 0)
     .Value = Sheets("Sheet1").Range("T5").Offset(i, 0).Value
     .Font.Color = Sheets("Sheet1").Range("T5").Offset(i, 0).Font.Color
   End With
 Next i
End Sub

マクロの実行方法

VBAコードを実行するには、Excelの「開発」タブを表示し、「Visual Basic」から新しいモジュールを作成してコードを貼り付けます。その後、マクロ実行でコピー処理が行われます。

初心者でも、コピー元とコピー先のセル範囲を変更するだけで応用可能です。

まとめ

Excelで文字色を保持してセル範囲を別シートに反映させるには、VBAのForループで1セルずつ文字列とフォント色を設定する方法が簡単です。これにより、赤字・黒字を正確に反映しながら複数範囲のコピーが可能になります。

コメント

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