スポンサーリンク

Excelマクロで文字の色やフォントを変える方法|書式変更

VBA

セルを指定してFontやColorなどを変更できます。

フォントをMerioに変えるコード
背景色を赤にするコード

イベントプロシージャに登録すれば、ファイルを開いたり閉じたりした瞬間に書式を統一できます。

フォント:Font

フォントを設定したい場合は、セルや列を指定してから、Fontを変更します。

Sub test()

Cells(1, 1).Font.Name = "Meiro"
Cells(1, 1).Font.Size = 20
Cells(1, 1).Font.Color = vbRed
Cells(1, 1).Font.Bold = True
Cells(1, 1).Font.Italic = True

End Sub
名前:Font.Name
サイズ:Font.Size
色:Font.Color
太字:Font.Bold = True or False
斜字:Font.Italic = True or False

まず最初に対象のセルを決めます。Cells(1,1)はA1セルのことです。
続いて、NameやSizeなど変更したい書式を指定して、何に変更するか決めましょう。

フォントをMerioに変えるコード

【関連記事】Excelマクロでセル,シート,ファイルを指定する方法

フォント名:Name

Sub test()

Cells(1, 1).Font.Name = "Times New Roman"

End Sub

Nameでフォント名(フォントの種類)を変えられます。
フォント名を文字列で指定しましょう。

バーからフォント名をコピーする図

こんな感じで、上にあるバーからフォント名をコピペすると楽です。

フォントサイズ:Size

Sub test()

Cells(1, 1).Font.Size = 20

End Sub

サイズ調整は、Sizeを指定して数値を打ち込むだけです。

文字色:Color

色はColorで指定するのですが、いくつか方法があります。

VBColor:vbRed, vbGreen, vbBlueなど
RGB:RGB(255, 0, 0)など
ColorIndex:0,1,2など(決められた数値)

vbColor

Sub test()

Cells(1, 1) = "vbRed"
Cells(2, 1) = "vbGreen"
Cells(3, 1) = "vbBlue"
Cells(1, 1).Font.Color = vbRed
Cells(2, 1).Font.Color = vbGreen
Cells(3, 1).Font.Color = vbBlue

End Sub

このプログラムを実行すると、それぞれがどんな色になるかが実際にわかります。
vbColorのメリットは指定している色が直感的にわかりやすい点です。

黒:vbBlack, 赤:vbRed青:vbBlue緑:vbGreen黄:vbYellow, 白:vbWhite

RGB

Sub test()

Cells(1, 1) = "赤"
Cells(2, 1) = "緑"
Cells(3, 1) = "青"
Cells(4, 1) = "黒"
Cells(5, 1) = "紫"
Cells(1, 1).Font.Color = RGB(255, 0, 0)
Cells(2, 1).Font.Color = RGB(0, 255, 0)
Cells(3, 1).Font.Color = RGB(0, 0, 255)
Cells(4, 1).Font.Color = RGB(0, 0, 0)
Cells(5, 1).Font.Color = RGB(255, 0, 255)

End Sub

RGBとはRedGreenBlueの略です。

色の濃さは1~255で設定されます。例えばRGB(255, 0, 0)は真っ赤です。
そして黒=RGB(0, 0, 0)、白=RGB(255, 255, 255)です。
RGBは細かい調節が可能なので、紫のような色も再現できます。

ColorIndex

Sub test()

Cells(1, 1) = "赤"
Cells(2, 1) = "緑"
Cells(3, 1) = "青"
Cells(4, 1) = "黒"

Cells(1, 1).Font.ColorIndex = 3
Cells(2, 1).Font.ColorIndex = 4
Cells(3, 1).Font.ColorIndex = 5
Cells(4, 1).Font.ColorIndex = 1

End Sub

ColorIndexは番号で色を指定する方法です。
VBAのシステム内で、番号と色が登録されています。

1:黒、2:白、3:赤、4:緑、5:青、6:黄色

太字(Bold)と斜字(Italic)

太字と斜字の設定はTrueかFalseで決めます。

太字:Font.Bold = True or False
斜字:Font.Italic = True or False

セル背景色:Interior.Color

Sub test()

Cells(1, 1) = "赤"
Cells(1, 1).Interior.Color = vbRed

End Sub

セルの背景色はInterior.Colorで設定します。

背景色を赤にするコード

色の指定方法は、上述の文字色と同じです。

文字寄せ方向:Alignment

左右寄せ:HorizontalAlignment

Sub test()

Cells(1, 1) = "右"
Cells(1, 1).HorizontalAlignment = xlRight
Cells(2, 1) = "中央"
Cells(2, 1).HorizontalAlignment = xlCenter
Cells(3, 1) = "左"
Cells(3, 1).HorizontalAlignment = xlLeft

End Sub
右:xlRight, 左:xlLeft, 中央:xlCenter

上下寄せ:VerticalAlignment

Sub test()

Cells(1, 1) = "上"
Cells(1, 1).VerticalAlignment = xlTop
Cells(2, 1) = "中央"
Cells(2, 1).VerticalAlignment = xlCenter
Cells(3, 1) = "下"
Cells(3, 1).VerticalAlignment = xlBottom

End Sub
上:xlTop, 下:xlBottom, 中央:xlCenter

複数範囲の書式設定

複数セルを指定する方法

Sub test()

Range("A1:C3").Interior.Color = vbRed
Range("A1:A5").Font.Size = 20

End Sub

Range(“左上:右下”)で複数のセルを指定できます。
“A1:C3″はA1~C3の計9個のセルが対象です。

行(列)を指定する方法

Sub test()

Rows(1).Interior.Color = vbRed
Columns(1).Font.Size = 20

End Sub

行はRows(行番号)、列はColumns(列番号)です。

シートの全セルを指定する方法

Sub test()

Cells.Font.Size = 12

End Sub

シート全体を指定したいなら、Cellsと書きます。
これを使えばシート全体で書式を統一することができますね。

全シートの全セルを指定する方法

Sub test()

For Each ws In ThisWorkbook.Worksheets
    ws.Cells.Font.Size = 12
    ws.Cells.Font.Name = "Meiryo"
Next ws

End Sub

For Eachで複数のオブジェクトに順番にアクセスできます。
今回は、プログラム実行ファイルの各シート1枚ずつを処理しましょう。
各シートの全セルで、フォントサイズとフォント名を変えることができます。

イベントプロシージャによる書式設定の自動化

イベントプロシージャを使えば書式設定を自動化してみましょう。
プログラムを書く”VisualBasic”の画面左端に”ThisWorkbook”があるので、ダブルクリックします。

イベントプロシージャでプログラムを登録する図

ダブルクリックするとウィンドウが現れるので、左上を”Workbook”右上を”Open”に変えてください。
するとWorkbook_Open()と表示されるはずです。
これで、ファイルを開くときに、プログラムが実行されるようになります。

Private Sub Workbook_Open()

For Each ws In ThisWorkbook.Worksheets
    ws.Cells.Font.Size = 12
    ws.Cells.Font.Name = "Meiryo"
Next ws

End Sub

全シートの全セルのフォントを統一するプログラムにしました。
保存してから閉じて開いてみて、書式が統一されていたら成功です。

まとめ

今回はVBAで書式を変更する方法を解説しました。
データ集計をしたいなら、オートフィルターの自動化も便利ですよ。

コメント

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