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

アフィリエイト広告を利用しています。
Information
運営者・ポテ

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

皆さん、こんにちは。ご覧いただきありがとうございます。

“日々の業務にちょうどいい自動化を”──

業務改善アプリケーションの開発を行っている   ソフトデザイン工房 です。

皆さん、Excelでの資料作成には、何かと書式設定が欠かせませんよね。

そして、その書式設定を思いどおりにコントロールできるのが、VBAの大きな強みです。

書式設定は、複雑なロジックを組むコードとは異なり、処理の流れが理解しやすく、初心者の方が最初に触れる題材としても適しています。

まずは気軽にコードを書いてみてはいかがでしょうか。

ぜひ、VBAで素晴らしいプログラミング体験を味わってみてください。

セルの書式設定の代表的なものとしては:

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

があります。

この記事では、これらを含むセルの書式設定全般について解説します。

セルの書式設定を幅広く網羅した完全版です。

Information

セル
ワークシートのひとつひとつのマス目のことです。

書式設定を自在に操ることができれば、より一層コーディングが効率化されますし、同時に楽しくなります。

さらに、ただ楽しいだけではなく、あなたのVBAアプリがより洗練され、その価値が高まることでしょう。

この記事が、あなたのVBAマクロの価値をさらに高める一助となれば幸いです。

VBAを活用して、自分自身や身近なコミュニティに合ったアプリケーションを作成し、仕事量は半分に、成果は2倍に──そんな未来を目指すあなたを応援しています。

Information

流行のプログラミング言語であり、事務作業の自動化にも強い「Python」でも、Excel の書式設定は一定程度まで行えます。

しかし、細部まで精緻に整えたい場合は、やはり VBA が最適です。

Excel VBA は Excel 操作のための言語であり、柔軟かつ幅広い書式設定を実現できます。

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
    現在のユーザーの地域設定に基づいて書式設定を行います。これは、地域によって異なる書式設定に対応するためのものです。例えば、日付や通貨の書式は、地域によって異なるため 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ステートメントでオブジェクトを指定
With ThisWorkbook.Worksheets("Sheet1").Cells(2, 2).Font

ここでは、With ステートメントを使用しています。

「ステートメント」とは、VBA内で特定の動作を定義する要素のことです。

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

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

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

ここでは、フォントのテーマカラーを指定してします。

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

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

ここでは、フォントの色の明るさTintAndShade)を設定しています。

TintAndShade は、色の明度を調整するためのプロパティで、-1(最も暗い)から 1(最も明るい)までの値をとります。なお、0は標準色を意味します。

Withステートメントの終了
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スキルアップの参考情報

近年は、ChatGPTをはじめとするAIの登場によって、学習のスタイルが大きく変わりました。

分からないことがあれば、AIに尋ねれば答えがすぐに見つかる時代です。

とはいえ、AIを使いこなすには、自分自身の基本的な知識や理解力が欠かせません。

全体像をつかむためには、やはり書籍などで体系的に学んでおくことが今でも有効です。

そのうえでAIを活用すれば、自分の理解度に合わせた的確な解説や、応用のヒントを得ることができます。

「学んで基礎を築く → AIで補い発展させる」──このサイクルを重ねることで、VBAスキルは着実に高まっていくでしょう。

VBAのスキルアップ

VBAを学び始めるなら

入門書は、どれを選んでも大きな差はないように感じます。

どれを選ぶかに悩むことに時間をかけるよりも、まずは手頃な一冊を手に取って進めてみるのがおすすめです。

もし迷ったときには、私はインプレス社の「いちばんやさしい」シリーズを選ぶことが多いです。

基礎を超えて力をつけたいなら

私は上級者を目指していましたので、入門書にとどまらず、このような内容の濃い一冊を選んで学んでいました。

今は誰でもAIを活用できる時代になりましたが、上級者を目指す方にとっては、AIをより上手に活用するという意味でも、こうした本は今なお価値があります。

このレベルの本を一冊持っておくことに、損はないでしょう。


資格で能力を証明したいなら

VBAのプログラミング能力を客観的に示したい場合には「VBAエキスパート試験」があります。

特に「スタンダード」の方は上級者向けです。

あなたが社内業務の改善を行う立場であっても、VBAで作成したシステムをお客様に納める立場であっても、この資格は信頼や安心につながるでしょう。

以下の公式テキストが販売されています。



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

「独学プログラマー」というプログラミングの魅力を解説した書籍があります。

これはVBAではなくPythonを題材としていますが、プログラミングの基本的な知識や思考法、仕事の進め方まで幅広く学べます。

今はAIにコードを尋ねれば、答えが返ってくる時代です。

しかし、この本からは「コード」以上に、プログラミングに向き合う姿勢や考え方を学ぶことができるでしょう。


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

【初心者歓迎】無料相談受付中 

運営者・ポテ

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

限られた時間をより良く使い、日本の生産性を高めたい──

みんなの実用学を運営するソフトデザイン工房では、業務整理や業務改善アプリケーション作成のご相談を承っております。

お気軽にご相談ください。


こちらの記事でも紹介しております。

おわりに

挿絵
運営者・ポテ

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

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

お問い合わせやご要望がございましたら、「お問い合わせ/ご要望」フォームまたはコメント欄よりお知らせください。

この記事が皆様のお役に立てれば幸いです。

なお、当サイトでは様々な情報を発信しております。よろしければトップページもあわせてご覧ください。

この記事を書いた人

運営者・ポテソフトデザイン工房|日々の業務にちょうどいい自動化を
■人生を追求する凡人 ■日本一安全で、気の向くままに自分の時間を過ごせる、こだわりのキャンプ場を作るのが夢 ■ソフトデザイン工房運営(個人事業者) - 業務改善アプリケーションをご提供 ■人生は時間そのもの。ひとりでも多くの人が「より良い人生にするために時間を使って欲しい」と願い、仕事のスキルの向上、余暇の充実、資産形成にチャレンジ。

コメントを残す

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