VBA入門
セルの書式(フォント,Font)

ExcelマクロVBAの基本と応用、エクセルVBAの初級・初心者向け解説
公開日:2013年5月以前 最終更新日:2021-09-03

第33回.セルの書式(フォント,Font)


セルで表示している文字の書体をマクロVBAで指定する方法です。
セル(Rangeオブジェクト)のフォントは、Fontプロパティになります。


Fontプロパティは、Fontオブシェクトを返します。

解りづらい説明だと思います。
オブジェクトは階層構造になっており、
下位のオブジェクトを参照する時は、
そのオブジェクトを返すプロパティを経由しているのです。
つまり、Fontプロパティを経由してFontオブジェクトを扱うという事になります。

難しい理屈はひとまず置いておくとして、
とにかく、
Range.Fontでセルのフォントを扱うという事を理解してください。


マクロでの指定

Range.Font.プロパティ = 設定値

Fontオブジェクトには、以下のプロパティがあります。

プロパティ プロパティの説明 プロパティの設定値と説明
Name フォント名
FontStyle フォント スタイル 下のBoldとItalicを使用して下さい。
Bold 太字 True、False
Italic 斜体 True、False
Size フォントのサイズ
Strikethrough 水平な取り消し線 True、False
Superscript 上付き文字 True、False
Subscript 下付き文字 True、False
OutlineFont アウトライン フォント True、False
Shadow 影付きフォント True、False
Underline 下線の種類 xlUnderlineStyleNone
xlUnderlineStyleSingle
xlUnderlineStyleDouble
xlUnderlineStyleDoubleAccounting
Color フォントの色 RGB値を表す長整数、色定数またはRGB関数
ColorIndex フォントの色 2003までの56色カラーパレットのインデックス
何色か分かりづらいのでColorを使ったほうが良い
ThemeColor 配色のテーマ カラー 2007以降のみ
TintAndShade 色を明るく、または暗く 2007以降のみ
ThemeFont テーマのフォント 2007以降のみ

Excel2007以降で追加されたプロパティがあります。
2007では色に関して大きく機能強化されたので、それに伴うプロパティの追加となっています。
テーマそのものについては、マクロVBAではなくブックで設定しておいたほうが良いでしょう。


色定数

VBAには、色を表す定数が用意されています。

vbBlack
vbRed
vbGreen
vbYellow
vbBlue
vbMagenta マゼンタ
vbCyan シアン
vbWhite

Range("セル範囲").Font.Color = vbRed '赤
Range("セル範囲").Font.Color = vbWhite '白
Range("セル範囲").Font.Color = vbBlack '黒

RGB値を表す長整数の代わりに、上記の定数を使用することが出来ます。
カラー定数以外にも、XlRgbColor列挙などで指定することもできます。
Colorプロパティの設定値一覧
・Excelのカラーについて ・ColorIndex、カラー定数、XlRgbColor列挙、RGB値 ・システム カラーの定数 ・サイト内の色関連関連ページ


RGB関数

RGB値を作成する関数として、RGB関数が用意されています。

RGB(red, green, blue)

red, green, blue、それぞれを0~255で指定します。

Range("セル範囲").Font.Color = RGB(255, 0, 0) '赤
Range("セル範囲").Font.Color = RGB(255, 255, 255) '白
Range("セル範囲").Font.Color = RGB(0, 0, 0) '黒


色の指定を解除(自動)

色の指定を自動に戻す場合は、

Range("セル範囲").Font.ColorIndex = xlAutomatic 

見た目の結果は黒文字になりますが、黒を指定した状態とは違います。
あくまで、「自動」と「黒」は違うということを理解しておいてください。


フォント(Font)設定についての注意点

フォントは、人がエクセルのシートを見たときに非常に影響があります。
同じデータでも、フォントが違う事で見易さが格段に違ってきます。
しかしその見易さは、人によっても感性の違いもありますし、時代とともに変化もしていきます。
このように、正解のない部分は、
いつでも簡単に変更できるようにしておいた方が、保守性が良いという事になります。

一番簡単に変更できるのは、やはりシートで変更できることになります。
つまり、何でもマクロで設定してしまうより、
なるべくシートで自由にフォントを設定しておけるようにした方が良い場合も多いという事です。




同じテーマ「マクロVBA入門」の記事

第30回.総合練習問題3

・マクロVBA練習問題 ・シンキングタイム ・マクロVBA練習問題解答へ
第31回.セルの書式(表示形式,NumberFormatLocal)
・マクロでの表示書式の指定 ・表示書式指定文字 ・表示書式指定文字の調べ方 ・Range.NumberFormatについて ・実際に表示されている形式の文字列を取得
第32回.セルの書式(配置,Alignment)
セル内での値を表示する位置(縦位置、横位置)をマクロVBAで指定できます。「セルの書式設定」→「配置」で指定する内容です。マクロVBAでの配置の指定 Range.プロパティ=設定値 指定できるプロパティの設定値は以下になります。
第33回.セルの書式(フォント,Font)
第34回.セルの書式(塗りつぶし,Interior)
・マクロVBAでのInterior指定 ・色定数 ・RGB関数 ・塗りつぶしなし ・条件付き書式との使い分け
第35回.セルの書式(罫線,Border)
・A1セル~B5セルに格子線を引いた時のマクロの記録 ・マクロVBAでの罫線指定 ・Bordersのプロパティ ・Range.BorderAroundメソッド ・マクロVBAでの罫線の注意点
第36回.総合練習問題4
・マクロVBA練習問題 ・シンキングタイム ・マクロVBA練習問題解答へ
第37回.ブック・シートの指定
・マクロVBAでのブック・シート指定の具体例 ・マクロVBAでのブック・シート指定の必要性 ・VBAでの色々なシート指定方法
第39回.セルのクリア(Clear,ClearContents)
・セル(Rangeオブジェクト)のクリア関係のメソッド(動作を与える) ・Range.Clear ・Range.ClearContents ・クリア関係メソッドについて
第40回.セルのコピー・カット&ペースト(Copy,Cut,Paste)
・セルをコピー(複写)する場合 ・セルを切り取る(移動する)場合 ・セル範囲のコピーについて ・別のシートにコピーする場合 ・アクティブシート以外へのコピー ・セルのコピーについてのサイト内参考ページ
第41回.セルのコピー&値の貼り付け(PasteSpecial)
・PasteSpecialメソッド ・値の貼り付け ・いろいろなコピーのVBAの書き方 ・PasteSpecialの使用例 ・最後に


新着記事NEW ・・・新着記事一覧を見る

TRIMRANGE関数(セル範囲をトリム:端の空白セルを除外)|エクセル入門(2024-08-30)
正規表現関数(REGEXTEST,REGEXREPLACE,REGEXEXTRACT)|エクセル入門(2024-07-02)
エクセルが起動しない、Excelが立ち上がらない|エクセル雑感(2024-04-11)
ブール型(Boolean)のis変数・フラグについて|VBA技術解説(2024-04-05)
テキストの内容によって図形を削除する|VBA技術解説(2024-04-02)
ExcelマクロVBA入門目次|エクセルの神髄(2024-03-20)
VBA10大躓きポイント(初心者が躓きやすいポイント)|VBA技術解説(2024-03-05)
テンキーのスクリーンキーボード作成|ユーザーフォーム入門(2024-02-26)
無効な前方参照か、コンパイルされていない種類への参照です。|エクセル雑感(2024-02-17)
初級脱出10問パック|VBA練習問題(2024-01-24)


アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|VBA入門
2.繰り返し処理(For Next)|VBA入門
3.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
4.変数宣言のDimとデータ型|VBA入門
5.RangeとCellsの使い方|VBA入門
6.ブックを閉じる・保存(Close,Save,SaveAs)|VBA入門
7.セルのクリア(Clear,ClearContents)|VBA入門
8.メッセージボックス(MsgBox関数)|VBA入門
9.条件分岐(Select Case)|VBA入門
10.ブック・シートの選択(Select,Activate)|VBA入門




このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


記述には細心の注意をしたつもりですが、
間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。
掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。


このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
本文下部へ