【簡単Excelマクロ・VBA】セルの書式設定|文字列、数値、日付、時間、通貨、色、罫線など|セルの基本操作 #006

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

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

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

本稿では、セルの基本操作に焦点を当て、セルの書式設定のうち「文字列、数値、日付、時間、通貨、色、罫線」について解説いたします。

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

また、関連する姉妹記事もご用意しております。もしよろしければ、合わせてご覧ください。

ことばの意味

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


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

マクロを作成するにあたり、セルの操作は何かと必要になります。セルの基本操作の全体像は以下の記事で解説しております。

本稿では、セルの基本操作に焦点を当て、セルの書式設定のうち「文字列、数値、日付、時間、通貨、色、罫線」について解説いたします。

VBAで「セルの書式設定」を行う方法

挿絵

セルの書式設定には、代表的なものとして以下のようなものがあります。

  • 文字列
  • 数値
  • 日付
  • 時間
  • 通貨
  • 罫線
運営者・ポテ

これらについて、順に解説していきます。

文字列

セルの書式を「文字列」に設定するには、以下のように記述します。

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

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

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

ことばの意味

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

数値

標準的な数値

セルの書式設定を「数値」にするには、以下のように記述します。

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桁区切りは、以下のように記述します。

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_ "

パーセンテージ形式

数値をパーセンテージ形式で表示するには以下のように記述します。

ThisWorkbook.Worksheets("Sheet1").Cells(2, 2).NumberFormat = "0%"
マクロ実行前
マクロ実行後

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

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

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

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

日付

セルの書式設定を「日付」にするには以下のように記述します。

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

時間

セルの書式設定を「時間」にするには以下のように記述します。”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"

通貨

セルの書式設定を「通貨」にするには以下のように記述します。

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

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

色についてはこちらの記事で解説しております。もしよろしければ、ご覧ください。

【簡単Excelマクロ・VBA】フォント・セルの色の設定|セルの基本操作 #005

いつもありがとうございます。 ノンプログラマー向け「Excelマクロ・VBA解説シリーズ」へようこそ。 今回の記事では、セルの基本操作のうち「フォントやセルの色設定」を…

罫線

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

指定範囲の外枠に罫線を引くには以下のように記述します。

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

Range オブジェクトに BorderAround メソッドを用い、引数Weight:=xlThin を設定しています。

BorderAround メソッドは指定範囲の外枠に罫線を引くメソッドです。Weight は線の太さを決めるプロパティです。引数の Weight:=xlThin で、線の太さを「細線」に設定しています。

ことばの意味

  • メソッド
    オブジェクトを操作するための「命令文」のことです。
  • 引数
    引数とは、メソッドや関数、プログラムを制御するために渡す値やオブジェクトのことです。
  • 関数
    特定の処理をまとめたもののことです。入力値を受け取り、それに基づいた結果を出力します。

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

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

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

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

指定範囲の一辺に線を引く Borders(xlEdgeX)

指定範囲の上辺に線を引くには以下のように記述します。

' 指定範囲の上辺に線を引く
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)

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

' 指定範囲の内側・垂直方向に線を引く
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極太線

NumberFormat と NumberFormatLocal の違い

前述のコードで NumberFormat と NumberFormatLocal という2つのプロパティを使用いたしました。これらの違いは次のようになっています。

NumberFormat と NumberFormatLocal の違い

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

おわりに

挿絵
運営者・ポテ

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

今回の記事では、セルの基本操作のうち「セルの書式設定|文字列、数値、日付、時間、通貨、色、罫線など」を解説いたしました。

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

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

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


筆者の記事関連経験

  • VBA使用経験約20年
    実務に使用するマクロを多数作成してきました。
  • Python 3 エンジニア認定基礎試験
    経済産業省が定めたガイドライン「ITスキル標準(ITSS)」に掲載されている民間資格です。

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

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

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

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



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

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

\チェックしてみよう/

\チェックしてみよう/

\チェックしてみよう/


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



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

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


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

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

コメントを残す

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