【Excelマクロ(VBa)】フォントの変更


 フォントを変更する


セルの文字フォントを変更するには、下記のように書きます。


'フォント名の変更

ActiveCell.Font.Name = "MS P明朝"

フォントに関わる内容は、フォント名だけではなく、・サイズ・太字イタリック下線(アンダーライン)がありますが、基本は同じで「~.Font.~」で設定します。



 複数フォントを変更する場合


複数フォントを変更する場合、下記のように変更内容を1行ずつ設定する方が良いのか、With ~ End With を用いた方がレスポンスが良いのか悩みどころです。

▽1行ずつ設定
'フォント名の変更
ActiveCell.Font.Name = "MS P明朝"
'太字
ActiveCell.Font.Bold = True
'イタリック
ActiveCell.Font.Italic = True
'下線(二重線)
ActiveCell.Font.Underline = xlUnderlineStyleDouble
'色変更
ActiveCell.Font.Color = RGB(0, 0, 255)
'フォントサイズ
ActiveCell.Font.Size = 9

▽With ~ End With を使って設定
With ActiveCell.Font
  'フォント名の変更
  .Name = "MS P明朝"
  '太字
  .Bold = True
  'イタリック
  .Italic = True
  '下線(二重線)
  .Underline = xlUnderlineStyleDouble
  '色変更
  .Color = RGB(0, 0, 255)
  'フォントサイズ
  .Font.Size = 9


 複数セルのフォントを変更する場合


他の処理数が少なく、1つのセルだけを変更するのであれば、そこまでレスポンスを気にする必要はないかもしれませんが、一連の処理の中で、ある固まりを一気に変更する場合は、変更セル数が多くなれば、その分処理に時間が掛かるため、出来る限りレスポンスを良く処理する必要があります。

以前「セルの幅を調整」でご紹介したように、i * j のデータを作成し、フォント変更処理を行ったところ、セル1つずつではなく、Rangeを用いて複数のセルを一気に処理した方がレスポンスが良かったです。

▽ i * j のデータ

また、複数フォント変更する場合は、With ~ End With を使う方が効率的でした。

▽ 事前準備 - 新規ブックを開く
'新規ブックを開く
Dim AppExcel As Excel.Application
Set AppExcel = New Excel.Application
AppExcel.Workbooks.Add

▽ 事前準備 - i * j のデータを準備
'i * j のデータを準備
For i = 1 To 50
  For j = 1 To 50
    AppExcel.Cells(i, j) = i * j
  Next j
Next i

▽ Rangeを用いて複数のセルを一気に処理
With AppExcel.Range(AppExcel.Cells(1, 1), AppExcel.Cells(50, 50)).Font
 .Name = "MS P明朝"
 .Bold = True
 .Italic = True
 .Underline = xlUnderlineStyleDouble
 .Color = RGB(0, 0, 255)
 .Font.Size = 9
End With

▽ (参考)セル1つずつ①
For i = 1 To 50
  For j = 1 To 50
    With AppExcel.Cells(i, j).Font
      .Name = "MS P明朝"
      .Bold = True
      .Italic = True
      .Underline = xlUnderlineStyleDouble
      .Color = RGB(0, 0, 255)
      .Font.Size = 9
    End With
  Next j
Next i

▽ (参考)セル1つずつ②
For i = 1 To 50
  For j = 1 To 50
    AppExcel.Cells(i, j).Font.Name = "MS P明朝"
    AppExcel.Cells(i, j).Font.Bold = True
    AppExcel.Cells(i, j).Font.Italic = True
    AppExcel.Cells(i, j).Font.Underline = xlUnderlineStyleDouble
    AppExcel.Cells(i, j).Font.Color = RGB(0, 0, 255)
    AppExcel.Cells(i, j).Font.Size = 9
  Next j
Next i

上記レスポンスの良かった順は「Rangeを用いた場合」 > 「(参考)セル1つずつ①」 > 「(参考)セル1つずつ②」です。

管理人 について

趣味:映画鑑賞・音楽鑑賞・ゲーム・旅行 仕事:会社員(IT関連)
カテゴリー: VBa(Excelマクロ), システム開発 パーマリンク

コメントを残す