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セルずつ文字列とフォント色を設定する方法が簡単です。これにより、赤字・黒字を正確に反映しながら複数範囲のコピーが可能になります。


コメント