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



いつもありがとうございます!
ノンプログラマー向け「Excel VBA マクロ 解説シリーズ」へようこそ。
本稿では、「セルの書式設定」を解説します。セルの書式設定の代表的なものとしては:
- 文字列、数値、日付、時間、通貨などの「表示形式」
- 「配置」
- 「フォント」
- 「罫線」
- 「塗りつぶし(セルの色)」
などがあります。本稿では、これらを含むセルの書式設定全般について解説します。セルの書式設定を幅広く網羅した完全版です。ご活用いただければ幸いです!
皆さん、Excelでの資料作成と言えば書式設定ですよね!そうなんです。そりゃ、そうです。

わかります!
そして、意のままに書式設定を行うことができるのがVBAの強みなんです。
また、書式設定は、複雑な構文を駆使するような作業とは異なり、比較的理解しやすいのが、素晴らしい点です。初心者の方がまずはじめに書いてみるコードとしてもおすすめです。ぜひ、すばらしいプログラミング体験を味わってください。
書式設定を自在に操ることができれば、より一層コーディングが効率化されますし、同時に楽しくなります。さらに、ただ楽しいだけではなく、あなたのVBAアプリがより洗練され、その価値が高まることでしょう。
VBAで仕事量は半分に、成果は2倍にしていきましょう!初心者の方でも理解しやすいように、わかりやすく解説していきます。ぜひ、ご覧ください!

成果を増やす!効率化に取り組む皆さんを全力で応援させてください!
VBAにおける「セルの基本操作」の全体像
マクロを作成するうえで、セルの操作は欠かせません!「セルの基本操作」の全体像については、以下の記事で詳しく解説しています。
本稿では、「セルの基本操作」のうち「セルの書式設定」を詳しく解説します。

ぜひ、ご覧ください!
「セルの書式設定」ではどんなことができる?
セルの初期設定では、Excelワークシートの見た目や動作をカスタマイズできます。具体的には、次のダイアログの各タブに表示されている項目の設定ができます。

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

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

「表示形式」では、次の項目の表示設定を行うことができます。
- 標準
- 数値
- 通貨
- 会計
- 日付
- 時刻
- パーセンテージ
- 分数
- 指数
- 文字列
- その他
- ユーザー定義

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

以降のセクションにて、それぞれの項目を解説させてください!
数値
数値の表示形式の基本
セルの表示形式を「数値」にする構文は次の通りです。
' 構文
Rangeオブジェクト.NumberFormat = "表示形式コード"
代表的な表示形式コードは下表のとおりです。各コードの末尾にはアンダースコアと半角スペース("_ "
)が含まれている点に注意してください。この意味については、後述します。
表示形式コード | 説明 |
---|---|
"0_ " | 整数(小数点なし) |
"0.00_ " | 小数点以下2桁 |
"#,##0_ " | カンマ区切りの整数 |
"#,##0.00_ " | カンマ区切り + 小数点以下2桁 |
具体的には、次のように記述します。
' 小数点以下2桁の例
ThisWorkbook.Worksheets("Sheet1").Cells(2, 2).NumberFormat = "0.00_ "
このコードを実行すると、次のような結果が得られます。


ここで、”0.00_ ” の右端には、アンダースコア("_"
)と半角スペース(" "
)が記述されています。この意味を解説します。
このアンダースコア("_"
)は、この後に続く文字の幅の分だけ余白を確保する機能を持っています。つまり、この例の場合には、アンダースコアの後に半角スペース(" "
)が記述されていますので、半角スペース分の余白が追加されて表示されます。
このように余白を確保するスタイルは、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 = "@"
これだけです!

以上で「文字列」の表示形式の解説は終了です!ありがとうございました!
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
このコードを実行すると、次の結果が得られます。



- wrap = 包む、巻く、折り返す
- text = 文字、テキスト
なんだか、とっても、分かりやすいですね!
文字の制御 - 縮小して全体を表示する
セル内に表示されるように文字を縮小する構文は、次の通りです。
' 構文
Rangeオブジェクト.ShrinkToFit = True
セル内に表示されるように文字を縮小するには以下のようにコードを記述します。
' セル内に表示されるように文字を縮小する
ThisWorkbook.Worksheets("Sheet2").Cells(2, 2).ShrinkToFit = True
このコードを実行すると、次の結果が得られます。



- shrink = 縮小する、小さくする
- fit = 収める、適合させる
こちらも、とっても、分かりやすいですね!
文字の制御 - セルを結合する
セルを結合する構文は、次の通りです。
Rangeオブジェクト.Merge
具体的には、次のようにコードを記述します。
ThisWorkbook.Worksheets("Sheet1").Range(Cells(2, 2), Cells(2, 3)).Merge
このコードを実行すると、次の結果が得られます。


Range
オブジェクトに対して Merge
メソッドを用いてセルを結合しています。Merge
メソッドは、指定した範囲のセルを結合するメソッドです。
この例では、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"
に変更しています。なお、変更前のフォントは "游ゴシック"
です。
スタイル、サイズ、下線、色
.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
(このマクロが記述されているブック)→ Sheet1
→ Cells(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関数」を使用して色を設定する方法は、次の通りです。
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
の値を 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 | 太い線 |

以上が「指定範囲の外枠に罫線を描く」方法です!ありがとうございます!
指定範囲の外枠と内側に一律に線を描く|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つの方法」をご覧ください。
ページ内リンク

以上が「セルの背景色」を設定する方法です!ありがとうございます!
背景色を「なし」に戻す方法
セルの背景色を「なし」にするには、次のようにInterior
の ColorIndex
プロパティに xlNone
を設定します。
ThisWorkbook.Worksheets("Sheet6").Cells(2, 2).Interior.ColorIndex = xlNone
このコードを実行すると、次の結果が得られます。



以上が「セルの背景色をなしに戻す」方法です!ありがとうございます!
関連記事
本稿と関連の深い記事です。もしよろしければ、合わせてご活用ください。
- 【簡単エクセル/Excel VBA マクロ】解説シリーズ目次 | みんなの実用学(jitsuyogaku.com)
- 【簡単エクセル/Excel VBA マクロ】Excel VBA マクロの全体像 | みんなの実用学 (jitsuyogaku.com)
VBAプログラミングスキルアップのための参考情報

ここでは参考図書を紹介いたしますが、これらに限らず自分に合うものを選ぶことが重要だと考えております。皆様の、より一層のご成功を心よりお祈りしております。
VBAプログラミングのスキルアップ
学習用としてもハンドブックとしても役立つ便利な書籍がこちらです。価格はやや高めですが、その内容は非常に充実しています。相応のスキルを身に付けるためには、こうしたしっかりとした書籍を一冊持っておくと良いでしょう。
入門書に関しては、どの書籍も大きな違いはありません。あまり迷うことに時間をかけるよりは、手頃なものを一冊選んでみると良いでしょう。VBAの入門書は数多く出版されていますので、興味がある方はぜひチェックしてみてください。
甲乙つけがたい場合、私はインプレス社の「いちばんやさしい」シリーズを選ぶことが多いです。
\チェックしてみよう/
\チェックしてみよう/
\チェックしてみよう/
VBAのプログラミング能力を客観的に証明したい場合には「VBAエキスパート試験」があります。この試験はVBAの知識を公式に認定するものです。VBAの総合的な能力獲得を目指す方に適しています。以下の公式テキストが販売されております。
プログラミングの一般教養
「独学プログラマー」というプログラミングの魅力を解説した書籍があります。これはVBAではなくPythonを題材としていますが、プログラミングの基本的な知識や思考法、仕事の進め方まで幅広く学べます。
こちらの記事でも紹介しております。もしよろしければご覧ください。

おわりに


ご覧いただきありがとうございました!
今回の記事では、セルの基本操作のうち「セルの書式設定」を解説いたしました。
お問い合わせやご要望等ございましたら、「お問い合わせ/ご要望」またはコメントにて、ご連絡いただければ幸いでございます。
皆様の人生がより一層素晴らしいものになるよう、少しでもお役に立てれば幸いでございます。
なお、当サイトでは様々な情報を発信しております。もしよろしければ、トップページもご覧いただけると幸いでございます。
この記事を書いた人
- ■人生を追求する凡人■日本一安全で、気の向くままに自分の時間を過ごせる、こだわりのキャンプ場を作るのが夢■光学・機械系エンジニア(歴20年、内マネジメント10年、特許数件権利化)/副業フリーランスエンジニア■読書・文学愛好■人生は時間そのもの。ひとりでも多くの人が「より良い人生にするために時間を使って欲しい」と願い、仕事のスキルの向上、余暇の充実、資産形成を研究。■VBAアプリ開発サービス提供中(業務委託 / VBA使用経験20年)■Python愛好(歴5年)■VBAエキスパート「Excel VBA スタンダード」(上級者向け資格)/ Python 3 エンジニア認定基礎(経済産業省「ITスキル標準(ITSS)」に掲載)