【簡単エクセル/Excel VBA マクロ】セルの書式設定完全版!|表示形式、配置、フォント、罫線、セルの色設定など|セルの基本操作 #006

アフィリエイト広告を利用しています。
QRコード
【QRコード】PC<-->スマホの切り替えにご利用ください
運営者・ポテ

いつもありがとうございます!

ノンプログラマー向け「Excel VBA マクロ 解説シリーズ」へようこそ。

本稿では、セルの書式設定を解説します。セルの書式設定の代表的なものとしては:

  • 文字列、数値、日付、時間、通貨などの「表示形式
  • 配置
  • フォント
  • 罫線
  • 塗りつぶし(セルの色)

などがあります。本稿では、これらを含むセルの書式設定全般について解説します。セルの書式設定を幅広く網羅した完全版です。ご活用いただければ幸いです!

Information
  • セル
    ワークシートのひとつひとつのマス目のことです。
  • ノンプログラマー
    プログラミングを専門にしていない人たちのことです。
  • VBAとマクロの違い
    VBAは、Visusal Basic for Application の略で、プログラミング言語のことです。マクロは、VBAを使って作成される「機能」のことです。

皆さん、Excelでの資料作成と言えば書式設定ですよね!そうなんです。そりゃ、そうです。

運営者・ポテ

わかります!

そして、意のままに書式設定を行うことができるのがVBAの強みなんです

また、書式設定は、複雑な構文を駆使するような作業とは異なり、比較的理解しやすいのが、素晴らしい点です。初心者の方がまずはじめに書いてみるコードとしてもおすすめです。ぜひ、すばらしいプログラミング体験を味わってください。

書式設定を自在に操ることができれば、より一層コーディングが効率化されますし、同時に楽しくなります。さらに、ただ楽しいだけではなく、あなたのVBAアプリがより洗練され、その価値が高まることでしょう。

VBAで仕事量は半分に、成果は2倍にしていきましょう!初心者の方でも理解しやすいように、わかりやすく解説していきます。ぜひ、ご覧ください!

運営者・ポテ

成果を増やす!効率化に取り組む皆さんを全力で応援させてください!

Information

流行りのプログラミング言語であり、事務作業の自動化も得意な「Python」でも、ある程度Excelの書式設定ができます。しかし、「Excel」の書式設定はVBAが一番ですね。VBAはそのための言語ですからね。柔軟で幅広い書式設定が可能です。

VBAにおける「セルの基本操作」の全体像

マクロを作成するうえで、セルの操作は欠かせません!「セルの基本操作」の全体像については、以下の記事で詳しく解説しています。

本稿では、「セルの基本操作」のうち「セルの書式設定」を詳しく解説します。

運営者・ポテ

ぜひ、ご覧ください!

「セルの書式設定」ではどんなことができる?

セルの初期設定では、Excelワークシートの見た目や動作をカスタマイズできます。具体的には、次のダイアログの各タブに表示されている項目の設定ができます。

Information
  • ダイアログ(Dialog)
    ユーザーに情報を伝えたり、入力を求めたりするために表示される小さなウィンドウ。設定変更や確認メッセージの表示などに使われる。一時的に表示され、操作が完了すると閉じる。
  • タブ(Tab)
    ダイアログやウィンドウ内で、異なる設定や情報を切り替えるためのUI要素。タブをクリックすると、対応する内容が表示される。設定画面などで広く使われる。
セルの初期設定ダイアログ
Excelの書式設定ダイアログ

それぞれの概要は次の通りです。

  • 表示形式
    数値や日付のフォーマットを変更できます。(例:通貨、パーセンテージ、カスタム書式)
  • 配置
    文字の揃え方や折り返し、縦書き・横書きなどを設定できます。
  • フォント
    文字の種類、大きさ、色、太字・斜体・下線などを指定できます。
  • 罫線
    セルの境界線を追加し、線の太さや色を変更できます。
  • 塗りつぶし(セルの色)
    セルの背景色やパターンを設定できます。
  • 保護
    シート保護時に、編集を許可するかどうかを設定できます。

本稿では、使用頻度の高い、「表示形式」、「配置」、「フォント」、「塗りつぶし(セルの色)」を解説します。

運営者・ポテ

以降のセクションで、それぞれの項目を解説させてください!

表示形式

挿絵

「表示形式」では、次の項目の表示設定を行うことができます。

  1. 標準
  2. 数値
  3. 通貨
  4. 会計
  5. 日付
  6. 時刻
  7. パーセンテージ
  8. 分数
  9. 指数
  10. 文字列
  11. その他
  12. ユーザー定義
セルの初期設定ダイアログ
表示形式

ここでは、書式設定の代表的なものとして、「数値」、「通貨」、「日付」、「時刻」、「パーセンテージ」、「文字列」を解説します。

運営者・ポテ

以降のセクションにて、それぞれの項目を解説させてください!

数値

数値の表示形式の基本

セルの表示形式を「数値」にする構文は次の通りです。

' 構文
Rangeオブジェクト.NumberFormat = "表示形式コード"

代表的な表示形式コードは下表のとおりです。各コードの末尾にはアンダースコアと半角スペース("_ ")が含まれている点に注意してください。この意味については、後述します。

表示形式コード説明
"0_ "整数(小数点なし)
"0.00_ "小数点以下2桁
"#,##0_ "カンマ区切りの整数
"#,##0.00_ "カンマ区切り + 小数点以下2桁

具体的には、次のように記述します。

' 小数点以下2桁の例
ThisWorkbook.Worksheets("Sheet1").Cells(2, 2).NumberFormat = "0.00_ "

このコードを実行すると、次のような結果が得られます。

ここで、”0.00_ ” の右端には、アンダースコア("_")と半角スペース(" ")が記述されています。この意味を解説します。

このアンダースコア("_")は、この後に続く文字の幅の分だけ余白を確保する機能を持っています。つまり、この例の場合には、アンダースコアの後に半角スペース(" ")が記述されていますので、半角スペース分の余白が追加されて表示されます

このように余白を確保するスタイルは、Excelの表示形式で良くみられます。

Information

単なる半角スペース(" ")では固定の幅しか取れませんが、アンダースコア("_")を使うことで、負の数と正の数の表示幅を揃えたり、フォント環境による影響を受けにくくしたりすることができます。

例えば、負の数を "(100)" のように括弧付きで表示する場合、正の数には括弧がないため、見た目の幅が異なります。このとき、正の数の表示形式に "_)" を加えると、括弧と同じ幅の余白が確保され、正負の数が揃って見えます。

また、フォントや環境によって半角スペースの幅が微妙に異なることがありますが、アンダースコアを使うことで特定の文字の幅を基準に余白を調整でき、表示の統一性が保たれます。そのため、Excelではデフォルトでアンダースコアを含む表示形式がよく使われます。

運営者・ポテ

続けます!

"0.00_ " の小数点以下のゼロの数は、小数点以下の桁数を表します。上記の例では小数点以下の桁数が2、つまり小数点第二位までを表示します。

小数点以下1桁=小数点第一位まで表示したい場合は "0.0_ "、小数点以下3桁=小数点第三位まで表示したい場合は "0.000_ " と記述します。

小数点以下の桁がゼロ、つまり整数の場合は "0_ "と記述します。

3桁区切りにしたい場合

扱う数値が大きくなってくると、3桁区切りを表示させたくなります。

上司に「見にくいから3桁区切りにせい!」と言われたことありませんか?

運営者・ポテ

私だけ?

3桁区切りは、次のように記述します。

ThisWorkbook.Worksheets("Sheet1").Cells(2, 2).NumberFormat = "#,##0_ "

コード実行結果は次の通りです。

"#,##0_" は、千の位(3桁毎)で区切る指示です。”#,##0” が 千の位を表します。一の位だけ「0」で、十の位以上は「#」で表しています。

運営者・ポテ

ここが重要なポイントです!

# は、必要に応じて数値を表示するためのプレースホルダーです。プレースホルダーとは、後からインプットされる数値を表示するために確保する仮の場所のことです。確保しておいた仮の場所に表示するものがなければ、何も表示しません。

運営者・ポテ

プレースホルダーを是非覚えてほしいです!

例えば数値が「1000」であれば「1,000」と表示しますが、「100」であれば千の位は表示する必要が無いので「0,100」ではなく、単に「100」と表示します。

これを「#」ではなく「0」を使い "0,000_ " と記述すると、数値が「1000」の場合は「1,000」と表示されますが、「100」の場合は「0,100」と不自然な表示がされてしまいます。「0」を使うと必要な場合のみ表示する仮の場所ではなく、実態が無くとも表示される場所として確保されてしまいます。

数値がマイナスの場合に赤字にする

数値がマイナスの場合に、赤字で表示したくなりますよね。

赤字で表示するには、次のように記述します。

"0_ ;[赤]-0_ " のセミコロン(";")の前側がプラスの場合、後ろ側がマイナスの場合の表示の指示です。

ThisWorkbook.Worksheets("Sheet1").Cells(2, 2).NumberFormat = "0_ ;[red]-0_ "

コード実行結果は、次の通りです。

運営者・ポテ

以上が、「数値」の表示形式を設定する方法です!ありがとうございます!

通貨

セルの表示形式を「通貨」にする構文は次の通りです。

' 構文
Rangeオブジェクト.NumberFormatLocal = "表示形式コード"

具体的には、次のように記述します。

' 具体例
ThisWorkbook.Worksheets("Sheet1").Cells(2, 2).NumberFormatLocal = "\#,##0_ "

このコードを実行すると、次の結果が得られます。

"\#,##0_ " の部分が通貨を指定している部分です。"\" は通貨記号、"#,##"は3桁区切り、"0"は小数点以下の桁数(この場合は整数)を表します。それぞれ所望の形式に変更して使用できます。

たとえば、小数点以下2桁を表示したい場合は "\#,##0.00_ " に変更できます。また、負の数を赤字で表示する場合は "\#,##0_ ;[Red]-\#,##0" のように指定できます。

運営者・ポテ

以上で「通貨」の表示形式の解説は終了です!ありがとうございました!

日付

セルの表示形式を「日付」にする構文は次の通りです。

' 構文
Rangeオブジェクト.NumberFormatLocal = "表示形式コード"

具体的には次のように記述します。

' 具体例
ThisWorkbook.Worksheets("Sheet1").Cells(2, 2).NumberFormatLocal = "yyyy/mm/dd"

このコードを実行すると、次の結果が得られます。

日付には様々な表示形式があります。下表に示します。

表示形式コード意味詳細
d日付日付の数値が1桁の場合、先頭に0をつけない ex)1日 --> 1
dd日付日付の数値が1桁の場合、先頭に0をつける ex) 1日 --> 01
m月の数値が1桁の場合、先頭に0をつけない ex)1月 --> 1
mm月の数値が1桁の場合、先頭に0をつける ex)1月 --> 01
mmm省略形の英語での月の名前 ex)1月 --> Jan
mmmm英語での月の名前 ex) 1月 --> January
yy年を下2桁で表示 ex) 2007年 --> 07
yyyy年を4桁で表示 ex) 2007 年--> 2007
運営者・ポテ

以上で「日付」の表示形式の解説は終了です!ありがとうございました!

時刻

セルの表示形式を「時刻」にする構文は、次の通りです。

' 構文
Rangeオブジェクト.NumberFormat = "表示形式コード"

具体的には、次のように記述します。”hh:mm:ss” は "時:分:秒"を表します。

' 具体例
ThisWorkbook.Worksheets("Sheet1").Cells(2, 2).NumberFormat = "hh:mm:ss"

このコードを実行すると、次の結果が得られます。

また、次のように記述すると12時間制のAM/PM形式で表示されます。

ThisWorkbook.Worksheets("Sheet1").Cells(2, 2).NumberFormat = "hh:mm AM/PM"
運営者・ポテ

以上で「時刻」の表示形式の解説は終了です!ありがとうございました!

パーセンテージ

数値をパーセンテージ形式で表示する構文は次の通りです。

' 構文
Rangeオブジェクト.NumberFormat = "表示形式"

には以下のように記述します。

' 具体例
ThisWorkbook.Worksheets("Sheet1").Cells(2, 2).NumberFormat = "0%"

このコードを実行すると、次の結果が得られます。

マクロ実行前
マクロ実行後

”0% のように、 0 の後に% を付記することでパーセンテージ表示になります。

小数点以下の桁数を指定する場合は、以下のように記述します。

ThisWorkbook.Worksheets("Sheet1").Cells(2, 2).NumberFormat = "0.00%"

この場合は、小数点以下の 0 が2つですので、小数点以下2桁でパーセンテージ表示されます。

運営者・ポテ

以上で「パーセンテージ」の表示形式の解説は終了です!ありがとうございました!

文字列

セルの書式設定を文字列にする基本構文は次の通りです。

' 構文
Range(セル範囲).NumberFormat = "@"

具体的には次のように記述します。これは、セル範囲Cells(2,2)を文字列にするコードです。

' 具体例
ThisWorkbook.Worksheets("Sheet1").Cells(2, 2).NumberFormat = "@"

このコードを実行すると、次のような結果が得られます。

マクロ実行結果において、数値型の「100」が、文字列の「100」になっているのが分かります。値が左寄せになっているのが、文字列型になった証拠です。

このように、Range オブジェクトの NumberFormatプロパティ に "@" を指定することで、書式が文字列となります。

運営者・ポテ

Range(セル範囲).NumberFormat = "@"
これだけです!

Information
  • オブジェクト
    操作する対象のことです。
  • Rangeオブジェクト
    セルやセルの範囲を操作するためのオブジェクトです。1つのセルから複数のセルにまたがる範囲までを指定でき、指定された範囲に対してデータの入力、書式の変更、値の取得などを行います。
  • プロパティ
    オブジェクトの属性のことです。オブジェクトの状態を制御したり、情報を取得したりするために使用されます。
運営者・ポテ

以上で「文字列」の表示形式の解説は終了です!ありがとうございました!

NumberFormat と NumberFormatLocal は何がちがう?

本セクションでは NumberFormat と NumberFormatLocal という2つのプロパティを使用いたしました。これらの違いは次のようになっています。

NumberFormat と NumberFormatLocal の違い

  • NumberFormat
    標準的な地域設定に基づいて数値の書式設定を行います。
  • NumberFormatLocal
    現在のユーザーの地域設定に基づいて書式設定を行います。これは、地域によって異なる書式設定に対応するためのものです。例えば、日付や通貨の書式は、地域によって異なるため NumberFormatLocal を使用すると、ユーザーの地域に合わせた書式設定になります。

配置

配置では、次の項目の設定を行うことができます。

  • 文字の配置
    • 横位置
    • 縦位置
  • 文字の制御
    • 折り返して全体を表示する
    • 縮小して全体を表示する
    • セルを結合する
  • 右から左
  • 方向
セルの書式設定内の「配置」タブの画像

本稿では、使用頻度の高い、「横位置」、「縦位置」、「折り返して全体を表示する」、「縮小して全体を表示する」、「セルを結合する」を解説します。

運営者・ポテ

以降のセクションでそれぞれの項目を解説させてください!

セル内の配置 - 横位置

セルのコンテンツの横位置を変更する方法を解説します。

セルのコンテンツの横位置を指定する構文は、次の通りです。

' 構文
Rangeオブジェクト.HorizontalAlignment = 水平方向の配置を指定する定数

"水平方向の配置を指定する定数"のところに指定できる定数は、下表の通りです。

定数名説明
xlGeneral標準(データの種類に応じた自動配置)
xlLeft左揃え
xlCenter中央揃え
xlRight右揃え
xlJustify両端揃え(複数行のセルで有効)
xlDistributed均等配置
運営者・ポテ

横位置を設定する具体例を示します!

中央揃えにするには、次のようにコードを記述します。

' 横位置を中央揃えにする
ThisWorkbook.Worksheets("Sheet1").Cells(2, 2).HorizontalAlignment = xlCenter

右詰めにするには、次のようにコードを記述します。

' 横位置を右詰めにする
ThisWorkbook.Worksheets("Sheet1").Cells(2, 2).HorizontalAlignment = xlRight

左詰めにするには、次のようにコードを記述します。

' 横位置を左詰めにする
ThisWorkbook.Worksheets("Sheet1").Cells(2, 2).HorizontalAlignment = xlLeft
運営者・ポテ

以上が横位置の設定です!ありがとうございます!

セル内の配置 - 縦位置

次に、セルのコンテンツの縦位置を変更する方法を解説します。

セルのコンテンツの縦位置を指定する構文は、次の通りです。

' 構文
Rangeオブジェクト.VerticalAlignment = 垂直方向を指定する定数

"垂直方向を指定する定数"のところに指定できる定数は、下表の通りです。

定数説明
xlTop上揃え
xlCenter中央揃え
xlBottom下揃え
xlJustify両端揃え(複数行のセルで有効)
xlDistributed均等配置
運営者・ポテ

横縦位置を設定する具体例を示します!

縦位置を中央揃えにするには、次のようにコードを記述します。

' 縦位置を中央揃えにする
ThisWorkbook.Worksheets("Sheet1").Cells(2, 2).VerticalAlignment = xlCenter

上詰めにするには、次のようにコードを記述します。

' 縦位置を上詰めにする
ThisWorkbook.Worksheets("Sheet1").Cells(2, 2).VerticalAlignment = xlTop
マクロ実行結果
マクロ実行結果

下詰めにするには、次のようにコード記述します。

' 縦位置を下詰めにする
ThisWorkbook.Worksheets("Sheet1").Cells(2, 2).VerticalAlignment = xlBottom
マクロ実行結果
マクロ実行結果

文字の制御 - 折り返して全体を表示する

セル内で文字を折り返す構文は、次の通りです。

' 構文
Rangeオブジェクト.WrapText = True

セル内で文字を折り返すには、具体的には、次のように記述します。

' セル内で文字を折り返す
ThisWorkbook.Worksheets("Sheet2").Cells(2, 2).WrapText = True

このコードを実行すると、次の結果が得られます。

運営者・ポテ

なんだか、とっても、分かりやすいですね!

文字の制御 - 縮小して全体を表示する

セル内に表示されるように文字を縮小する構文は、次の通りです。

' 構文
Rangeオブジェクト.ShrinkToFit = True

セル内に表示されるように文字を縮小するには以下のようにコードを記述します。

' セル内に表示されるように文字を縮小する
ThisWorkbook.Worksheets("Sheet2").Cells(2, 2).ShrinkToFit = True

このコードを実行すると、次の結果が得られます。

運営者・ポテ

こちらも、とっても、分かりやすいですね!

文字の制御 - セルを結合する

セルを結合する構文は、次の通りです。

Rangeオブジェクト.Merge

具体的には、次のようにコードを記述します。

ThisWorkbook.Worksheets("Sheet1").Range(Cells(2, 2), Cells(2, 3)).Merge

このコードを実行すると、次の結果が得られます。

Range オブジェクトに対して Mergeメソッドを用いてセルを結合しています。Merge メソッドは、指定した範囲のセルを結合するメソッドです。

Information
  • オブジェックト
    VBAで操作する対象のことです。
  • メソッド
    オブジェクトを操作するための命令文のことです。

この例では、Cells(2, 2) Cells(2, 3)をオブジェクトとして指定し、結合しています。

たとえば、Cells(2, 2)Cells(3, 3)指定すると、マクロ実行結果は次のようになります。

ThisWorkbook.Worksheets("Sheet1").Range(Cells(2, 2), Cells(3, 3)).Merge
運営者・ポテ

以上が「セルの結合」です!ありがとうございます!

文字の制御 - セルの結合を解除する

セルの結合を解除す構文は、次の通りです。

Rangeオブジェクト.UnMerge

具体的には、次のようにコードを記述します。

ThisWorkbook.Worksheets("Sheet1").Cells(2, 2).UnMerge

このコードを実行すると、次の結果が得られます。

結合されているセルに対して UnMerge メソッドを用いてセルの結合を解除しています。UnMerge メソッドは、セルの結合を解除するメソッドです。

運営者・ポテ

結合が Merge なのに対して、結合の解除は "Un"Merge なんですねー。これも、直感的に分かりやすいと言えば、分かりやすいですよね。英語の意味そのままなんですね。

フォント

フォントでは、次の項目の設定を行うことができます。

  • フォント名
  • スタイル
  • サイズ
  • 下線
  • 文字飾り
セルの書式設定ダイアログの「フォント」の内容を表す画像
フォントタブの内容

本稿では、使用頻度の高い、「フォント名」、「スタイル」、「サイズ」、「下線」、「色」を解説します。

運営者・ポテ

以降のセクションにて、それぞれの項目を解説させてください!

フォント名

フォント名を変更する構文は、次の通りです。

Rangeオブジェクト.Font.Name = "フォント名"

具体的には、次のようにコードを記述します。

ThisWorkbook.Worksheets("Sheet1").Cells(2, 2).Font.Name = "Meiryo UI"

このコードでは、FontオブジェクトのNameプロパティを "Meiryo UI" に変更しています。なお、変更前のフォントは "游ゴシック" です。

Information
  • オブジェクト
    VBAで操作する対象のことです。VBAとは、マクロを作成するためのプログラミング言語のことです。
  • プロパティ
    オブジェクトの属性のことです。オブジェクトの状態を制御したり、情報を取得したりするために使用されます。

スタイル、サイズ、下線、色

.Fontオブジェクトには、.Nameの他にも様々なプロパティを設定できます。

Fontオブジェクトのプロパティ内容
.Sizeフォントサイズの設定
.Bold太字の設定(True or False)
.Italicイタリックの設定(True or False)
.Underlineアンダーラインの設定(True or False)
.Colorフォント色の設定

スタイル、サイズ、下線、色を設定する具体例を示します。

With ThisWorkbook.Worksheets("Sheet1").Cells(2, 2).Font

    .Name = "Meiryo UI"
    .Bold = True
    .Italic = True
    .Underline = True
    .Color = RGB(0, 0, 128)     ' 紺色

End With

このコードを実行すると、次の結果が得られます。

なお、色の設定については、様々な方法がありますので、次のセクションで解説します。

フォントの色を設定する3つの方法

フォントの色を設定するには、大きく分けて次の3つの方法があります。

  • ThemeColor & TintAndShade プロパティを使う方法
  • Colorプロパティ & RGB関数を使う方法
  • ColorIndex プロパティを使う方法
運営者・ポテ

それぞれ解説していきます!

1. ThemeColor & TintAndShade プロパティ|「テーマの色」の設定

色のドロップダウンメニューにある「テーマの色」を設定する方法を解説します。

テーマの色

この設定は、「ThemeColorプロパティ」と「TintAndShadeプロパティ」を使用して行います。それぞれのプロパティの役割は次のようになっています。

役割

  • ThemeColorプロパティ
    オブジェクトの色をテーマカラーで指定するプロパティです。なお、オブジェクトとは、VBAで操作する対象のことです。
  • TintAndShade プロパティ
    色の明るさを指定するプロパティです。

まず例としてフォントを次の色に設定するコードを解説します。

以下の色

コードとその実行結果を示します。

' Withステートメントでオブジェクトを指定
With ThisWorkbook.Worksheets("Sheet1").Cells(2, 2).Font
    

    ' テーマカラーを指定
    .ThemeColor = xlThemeColorAccent5
        
    ' 色の明るさを指定        
    .TintAndShade = 0
    
End With
運営者・ポテ

順を追って解説しますよ!

' Withステートメントでオブジェクトを指定
With ThisWorkbook.Worksheets("Sheet1").Cells(2, 2).Font

ここでは、With ステートメントを使用しています。「ステートメント」とは、VBA内で特定の動作を定義する要素のことです。With ステートメントを使うと、同じオブジェクトに対して複数のプロパティやメソッドを適用する際に、オブジェクトを毎回指定する手間を省くことができます。

この例では、ThisWorkbook(このマクロが記述されているブック)→ Sheet1Cells(2, 2)Font の順でオブジェクトを指定しています。

    ' テーマカラーを指定
    .ThemeColor = xlThemeColorAccent5

ここでは、フォントのテーマカラーを指定してします。具体的には、フォントのテーマカラーを xlThemeColorAccent5 に指定しています。xlThemeColorAccent5 が、この色です。

    ' 色の明るさを指定        
    .TintAndShade = 0

ここでは、フォントの色の明るさを設定しています。TintAndShade プロパティは、色の明度を調整するために使用され、-1(最も暗い)から 1(最も明るい)までの値をとります。0は標準色を意味します。

End With

ここでは、With ステートメントを終了しています。このEnd With によって、これまでの With ステートメント内で指定したオブジェクトに対する設定が完了します。

なお、各色の「ThemeColor」と「TintAndShade」は、次のように対応してします。

※xlThemeColorDark1 のみ文字が見にくいため背景を黒にしています。

運営者・ポテ

以上が、「ThemeColorプロパティ」と「TintAndShadeプロパティ」を使用した色の設定方法です。

2. Color プロパティ & RGB関数|「標準の色」の設定

Colorプロパティ」と「RGB関数」を使用して色を設定する方法は、次の通りです。

Information
  • プロパティ
    オブジェクトの属性のことです。オブジェクトの状態を制御したり、情報を取得したりするために使用されます。
  • 関数

特定の処理をひとまとめにしたもので、入力値に応じた結果を返します。

RGB 関数は、赤 (R)、緑 (G)、青 (B) の各色を 0 から 255 の範囲で指定し、組み合わせによって色を表現する関数です。

例として、ColorプロパティとRGB関数を使用してフォントを濃い赤色にするコードを示します。このコードでは、フォントの色を RGB(192, 0, 0) に設定しています。この指定で、フォントは濃い赤色になります。

' フォントを濃い赤色にする
With ThisWorkbook.Worksheets("Sheet1").Cells(2, 2).Font
    
    .Color = RGB(192, 0, 0)
    
End With
マクロ実行後
マクロ実行後

各標準の色とRGB値は、次の通りに対応しています。

※.Color = RGB(255, 255, 0)のみ文字が見にくいため背景

運営者・ポテ

以上が、「Colorプロパティ」と「RGB関数」を使用した色の設定方法です!

この方法では、RGBで色を指定しているので、直感的で分かりやすいですね!

3. ColorIndex プロパティ

ColorIndex プロパティは、Excel が持つ 56 色のパレットから色を設定する方法で、インデックス番号を指定することで色を設定できます。

たとえば、フォントの色を赤にする場合は、つぎのように記述します。ColorIndex=3に相当します。

' フォントの色を赤にする
With ThisWorkbook.Worksheets("Sheet1").Cells(2, 2).Font
    
    .ColorIndex = 3
        
End With

ColorIndex と 色の対応は下表の通りです。

ColorIndex 一覧

フォントの色を「黒」に戻す方法

なお、色を元の黒色(標準色)に戻す場合は、.ColorIndex の値を xlAutomatic に設定します。これにより、セルやフォントの色が自動設定の黒色に戻ります。

With ThisWorkbook.Worksheets("Sheet1").Cells(2, 2).Font

    .ColorIndex = xlAutomatic

End With
運営者・ポテ

以上が「フォントの色を黒に戻す」方法です!ありがとうございます!

罫線

指定範囲の外枠に罫線を描く|BorderAround

指定範囲の外枠に罫線を引く構文は、次の通りです。

' 構文
Rangeオブジェクト.BorderAround Weight:=罫線の太さを指定する定数

具体的には、次のように記述します。

' 具体例
ThisWorkbook.Worksheets("Sheet1").Range(Cells(2, 2), Cells(4, 4)).BorderAround Weight:=xlThin

このコードを実行すると、次のような結果が得られます。

Range オブジェクトに BorderAround メソッドを用い、引数Weight:=xlThin を設定することで罫線を描画しています。

BorderAround メソッドは、指定範囲の外枠に罫線を引きます。Weight は線の太さを指定する引数で、Weight:=xlThin とすることで細線を設定できます。

なお、引数Weightに指定できる定数は下表の通りです。

定数名意味
xlHairline最も細い線
xlThin細い線
xlMedium中くらいの線
xlThick太い線
Information
  • メソッド
    オブジェクトを操作するための「命令文」のことです。
  • 引数
    引数とは、メソッドや関数、プログラムを制御するために渡す値やオブジェクトのことです。
  • 定数
    定数とは、あらかじめ決められた値を表す識別子のことです。xlThinxlMedium などの定数が用意されており、特定の値を表すために利用されます。
運営者・ポテ

以上が「指定範囲の外枠に罫線を描く」方法です!ありがとうございます!

指定範囲の外枠と内側に一律に線を描く|Borders

指定範囲の外枠と内側に一律の線を引く、構文は次の通りです。

' 構文
Rangeオブジェクト.Borders.Weight = 罫線の太さを指定する定数

指定範囲の外枠と内側に一律に線を引くには以下のように記述します。

' 具体例
ThisWorkbook.Worksheets("Sheet1").Range(Cells(2, 2), Cells(4, 4)).Borders.Weight = xlThin

このコードを実行すると、次の結果が得られます。

Range オブジェクトの Borders.Weight プロパティに xlThin (細線)を設定することで、枠線を描画しています。

なお、引数Weightに指定できる定数は下表の通りです。

定数名意味
xlHairline最も細い線
xlThin細い線
xlMedium中くらいの線
xlThick太い線
運営者・ポテ

以上が、「指定範囲の外枠と内側に一律に線を描く」方法です!ありがとうございます!

指定範囲の一辺に罫線を描く|Borders(xlEdgeX)

指定範囲の一辺に罫線を描く構文は、次の通りです。

' 構文
Rangeオブジェクト.Borders(辺の位置を指定する定数).Weight = 罫線の太さを指定する定数

ここで、"辺の位置を指定する定数"のところに指定できる定数は下表の通りです。

定数名位置
xlEdgeLeft
xlEdgeTop
xlEdgeBottom
xlEdgeRight

"罫線の太さを指定する定数"のところに指定できる定数は、下表の通りです。

定数名意味
xlHairline最も細い線
xlThin細い線
xlMedium中くらいの線
xlThick太い線
運営者・ポテ

各辺に罫線を描く具体例を示します!

指定範囲の上辺に線を描くには、次のように記述します。

' 指定範囲の上辺に線を引く
ThisWorkbook.Worksheets("Sheet1").Range(Cells(2, 2), Cells(4, 4)).Borders(xlEdgeTop).Weight = xlThin

このコードを実行すると、次の結果が得られます。

Range オブジェクトの Borders(xlEdgeTop).Weight プロパティに xlThin(細線) を設定しています。

同様に、底辺、左辺、右辺に線を引くには以下のように記述します。

' 指定範囲の底辺に線を引く
ThisWorkbook.Worksheets("Sheet1").Range(Cells(2, 2), Cells(4, 4)).Borders(xlEdgeBottom).Weight = xlThin
' 指定範囲の左辺に線を引く
ThisWorkbook.Worksheets("Sheet1").Range(Cells(2, 2), Cells(4, 4)).Borders(xlEdgeLeft).Weight = xlThin
' 指定範囲の右辺に線を引く
ThisWorkbook.Worksheets("Sheet1").Range(Cells(2, 2), Cells(4, 4)).Borders(xlEdgeRight).Weight = xlThin
運営者・ポテ

以上が「各辺に罫線を描く」方法です!ありがとうございます!

指定範囲の内側に罫線を描く|Borders(xlInsideX)

指定範囲の内側に罫線を描く構文は、次の通りです。

' 構文
Rangeオブジェクト.Borders(罫線の位置を指定する定数).Weight = 罫線の太さを指定する定数

"罫線の位置を指定する定数"のところに指定できる定数は、下表の通りです。

定数名位置
xlInsideVertical縦線(セルの内側)
xlInsideHorizontal横線(セルの内側)

"罫線の太さを指定する定数"のところに指定できる定数は、下表の通りです。

定数名意味
xlHairline最も細い線
xlThin細い線
xlMedium中くらいの線
xlThick太い線
運営者・ポテ

各位置に罫線を描く具体例を示します!

指定範囲の内側の垂直方向に線を引くには以下のように記述します。

' 指定範囲の内側・垂直方向に線を引く
ThisWorkbook.Worksheets("Sheet1").Range(Cells(2, 2), Cells(4, 4)).Borders(xlInsideVertical).Weight = xlThin

このコードを実行すると、次の結果が得られます。

Range オブジェクトの Borders(xlInsideVertical).Weight プロパティに xlThin(細線) を設定しています。

同様に、指定範囲の内側の水平方向に線を引くには、次のように記述します。

' 指定範囲の内側・水平方向に線を引く
ThisWorkbook.Worksheets("Sheet1").Range(Cells(2, 2), Cells(4, 4)).Borders(xlInsideHorizontal).Weight = xlThin

このコードを実行すると、次の結果が得られます。

運営者・ポテ

以上が「指定範囲の内側に罫線を描く」方法です!

線の詳細を設定する方法

線の種類、太さ、色などの詳細を設定することもできます。次のように記述します。

' With ステートメントで Borders を指定
With ThisWorkbook.Worksheets("Sheet1").Range(Cells(2, 2), Cells(4, 4)).Borders
    
    ' 線の種類を破線(xlDash)に設定
    .LineStyle = xlDash
    
    ' 線の色をテーマカラーの青に設定
    .ThemeColor = xlThemeColorAccent5

    ' 線の色の明るさを標準(0)に設定
    .TintAndShade = 0
    
    ' 線の太さを太線(xlMedium)に設定
    .Weight = xlMedium

End With

このコードを実行すると、次の結果が得られます。

各プロパティと、そのバリエーションを解説します。

LineStyle

LineStyle は線の種類に関するプロパティです。下表のような定数を設定できます。

定数名意味
xlContinuous実線
xlDash破線
xlDashDot一点鎖線
xlDashDotDot二点鎖線
xlDot点線
xlSlantDashDot斜め破線
xlDouble二重線
xlLineStyleNone線無し

ThemeColor & TintAndShade

ThemeColor はテーマの色に関するプロパティです。TintAndShade は色の明るさを設定するプロパティです。

色は、ThemeColor以外にも様々なバリエーションがあります。こちらの記事に詳述しております。

Weight

Weight は線の太さに関するプロパティです。下表のような引数を設定できます。これまでの解説内でも示してきましたが、再掲します。

定数名意味
xlHairline最も細い線
xlThin細い線
xlMedium中くらいの線
xlThick太い線
運営者・ポテ

以上が「線の詳細」を設定する法です!ありがとうございます!

塗りつぶし(セルの色)

「塗りつぶし」では、次の項目の設定を行うことができます。

  • 背景色
  • パターンの色
  • パターンの種類

本稿では、使用頻度の高い、「背景色」を解説します。

背景色(セルの色)

背景色を設定する方法

セルの背景色は、基本的にフォントの色と同じ方法で設定できます。

フォントの場合は、Fontオブジェクトに対して色の設定を行いましたが、セルの背景色の場合には Interior オブジェクトに対して色の設定を行います。

つまり

.Font.Interior に置換するだけです。

たとえば、ThemeColor & TintAndShade プロパティで色を設定する場合は、次のようになります。

' フォントの色の場合
With ThisWorkbook.Worksheets("Sheet1").Cells(2, 2).Font
    
    ' テーマカラーを指定
    .ThemeColor = xlThemeColorAccent5
        
    ' 色の明るさを指定        
    .TintAndShade = 0
    
End With


' セルの背景色の場合
With ThisWorkbook.Worksheets("Sheet4").Cells(2, 2).Interior

    .ThemeColor = xlThemeColorAccent5

    .TintAndShade = 0

End With

【フォントの色設定の実行結果】

【セルの背景色設定の実行結果】

Color プロパティ & RGB関数で設定する方法、および ColorIndex で設定する方法についても同様です。詳しくは「フォントの色を設定する3つの方法」をご覧ください。

運営者・ポテ

以上が「セルの背景色」を設定する方法です!ありがとうございます!

背景色を「なし」に戻す方法

セルの背景色を「なし」にするには、次のようにInteriorColorIndex プロパティに xlNone を設定します。

ThisWorkbook.Worksheets("Sheet6").Cells(2, 2).Interior.ColorIndex = xlNone

このコードを実行すると、次の結果が得られます。

マクロ実行前
マクロ実行後
運営者・ポテ

以上が「セルの背景色をなしに戻す」方法です!ありがとうございます!

関連記事

本稿と関連の深い記事です。もしよろしければ、合わせてご活用ください。

VBAプログラミングスキルアップのための参考情報

ここでは参考図書を紹介いたしますが、これらに限らず自分に合うものを選ぶことが重要だと考えております。皆様の、より一層のご成功を心よりお祈りしております。

VBAプログラミングのスキルアップ

学習用としてもハンドブックとしても役立つ便利な書籍がこちらです。価格はやや高めですが、その内容は非常に充実しています。相応のスキルを身に付けるためには、こうしたしっかりとした書籍を一冊持っておくと良いでしょう。



入門書に関しては、どの書籍も大きな違いはありません。あまり迷うことに時間をかけるよりは、手頃なものを一冊選んでみると良いでしょう。VBAの入門書は数多く出版されていますので、興味がある方はぜひチェックしてみてください。

甲乙つけがたい場合、私はインプレス社の「いちばんやさしい」シリーズを選ぶことが多いです。

\チェックしてみよう/

\チェックしてみよう/

\チェックしてみよう/


VBAのプログラミング能力を客観的に証明したい場合には「VBAエキスパート試験」があります。この試験はVBAの知識を公式に認定するものです。VBAの総合的な能力獲得を目指す方に適しています。以下の公式テキストが販売されております。



プログラミングの一般教養

「独学プログラマー」というプログラミングの魅力を解説した書籍があります。これはVBAではなくPythonを題材としていますが、プログラミングの基本的な知識や思考法、仕事の進め方まで幅広く学べます。


こちらの記事でも紹介しております。もしよろしければご覧ください。

QRコード
【QRコード】PC<-->スマホの切り替えにご利用ください

おわりに

挿絵
運営者・ポテ

ご覧いただきありがとうございました!

今回の記事では、セルの基本操作のうち「セルの書式設定」を解説いたしました。

お問い合わせやご要望等ございましたら、「お問い合わせ/ご要望」またはコメントにて、ご連絡いただければ幸いでございます。

皆様の人生がより一層素晴らしいものになるよう、少しでもお役に立てれば幸いでございます。

なお、当サイトでは様々な情報を発信しております。もしよろしければ、トップページもご覧いただけると幸いでございます。

この記事を書いた人

運営者・ポテ
■人生を追求する凡人■日本一安全で、気の向くままに自分の時間を過ごせる、こだわりのキャンプ場を作るのが夢■光学・機械系エンジニア(歴20年、内マネジメント10年、特許数件権利化)/副業フリーランスエンジニア■読書・文学愛好■人生は時間そのもの。ひとりでも多くの人が「より良い人生にするために時間を使って欲しい」と願い、仕事のスキルの向上、余暇の充実、資産形成を研究。■VBAアプリ開発サービス提供中(業務委託 / VBA使用経験20年)■Python愛好(歴5年)■VBAエキスパート「Excel VBA スタンダード」(上級者向け資格)/ Python 3 エンジニア認定基礎(経済産業省「ITスキル標準(ITSS)」に掲載)

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です