【マクロVBA】表示形式を変更する方法!Format関数で文字・数値・日付の調整する

セルに入力

VBAを使ってExcelで作業を行う際、セルの表示形式を変更する必要があることがあります。
例えば、数値や日付を特定の形式に整形したり、小数点以下の桁数を制御したりすることができます。

今回は、「Format」関数を使用してセルの表示形式を変更する方法について詳しく解説します。

ぜひ参考にしてみてください。
それでは見ていきましょう!




⬛︎こんな事ができるようになる!

この関数を使用することで、数値や日付、文字列などのデータを特定の形式に整形することができます。

⬛︎忙しい人向けのコピペ用ソースコード

Sub format変換()
 Dim Befor
  Befor = 変更する数値・文字
  入力セル・変数 = Format(Befor, 書式コード)
End Sub

変更する数値・文字・入力セル・変数・書式コードはカスタムして使用してください。

⬛︎構文の説明

まず、使用する関数についてです「Format関数」になります。
関数仕様としては下記の通りです。

格納する変数・セル =  Format(変更する数値・文字, 書式コード)
変更する数値・文字」には変換したいデータを指定し、「表示形式」には変換後の表示形式を指定します。

表示形式 書式コード
通常の数値 “0”
小数点以下2桁 “0.00”
桁区切りあり “#,##0”
貨幣形式 (円) “\¥#,##0”
貨幣形式 (ドル) “$#,##0.00”
パーセンテージ “0.00%”
指数表示 “0.00E+00”
通常の日付 “yyyy/mm/dd”
日付 (年・月・日) “[$-411]yyyy” & “年” & “mm” & “月” & “dd” & “日”
英語表記の日付 “[$-409]yyyy/mm/dd”
時刻 “hh:mm:ss”
時刻 (AM/PM) “hh:mm AM/PM”
時刻 (24時間表示) “[$-411]hh:mm”
長い日付と時刻 “yyyy/mm/dd hh:mm:ss”
特定の文字列パターンを追加 “””ABC”” & @”
大文字に変換 “>”
小文字に変換 “<“

 
では実際に使用した例を紹介したいと思います。

⬛︎数値の表示形式を変更する方法

・小数点以下の桁数を指定する

まず、小数点以下の桁数を指定してみましょう。
下図の見本をご覧ください。

今回は「123.456」という数値の値を小数点2桁に変更したいと思います。

数値を小数点以下2桁まで表示したい場合は、「0.00」という表示形式を使用します。以下は具体的なコード例です。

Sub format変換()
 Dim Befor
  Befor= Cells(2, 3)
  Cells(5, 3)= Format(Befor, “0.00”)
End Sub

それでは実行してみましょう。

上記のコードを実行すると、セル”C5“には「123.46」という値が表示されます。

・桁区切りを追加する

次に数値の桁区切りを指定してみましょう。
下図の見本をご覧ください。

今回は3桁ごとに「,」を追加したいと思います。

桁区切り(カンマ)を追加したい場合は、「“#,##0”」という表示形式を使用します。以下は具体的なコード例です。

Sub format変換()
 Dim Befor
  Befor= Cells(2, 3)
  Cells(5, 3) = Format(Befor, “#,##0”)
End Sub

それでは実行してみましょう。
結果はこのようになります。

上記のコードを実行すると、セル”C5“には「1,234,567」という値が表示されます。

・パーセンテージ表示にする

つぎにパーセンテージ表示を指定してみましょう。
下図の見本をご覧ください。

数値をパーセンテージ表示にする場合は、「“0.00%”」という表示形式を使用します。以下は具体的なコード例です。

Sub format変換()
 Dim Befor
  Befor= Cells(2, 3)
  Cells(5, 3) = Format(Befor, “0.00%”)
End Sub

それでは実行してみましょう。

上記のコードを実行すると、セル”C5“には「75.00%」という値が表示されます。

⬛︎日付の表示形式を変更する方法

日付の表示形式を変更する際にも、Format関数を利用することができます。

・日付の書式を指定する

まず、日付の書式を指定してみましょう。
下図の見本をご覧ください。

日付の表示形式を指定する際は、書式コードを使用します。
例えば、「“yyyy/mm/dd”」という表示形式を使用すると、年月日の順で表示されます。

以下は具体的なコード例です。

Sub format変換()
 Dim Befor
  Befor= Cells(2, 3)
  Cells(5, 3)= Format(Befor, “yyyy/mm/dd”)
End Sub

それでは実行してみましょう。

上記のコードを実行すると、セル”C5“には現在の日付が「2023/07/3」という形式で表示されます。

・日付の表示言語を変更する

次に、日付の表示言語を変更してみましょう。
下図の見本をご覧ください。

通常であれば下図のように「日本」になっています。

日付の表示言語を変更する場合は、書式コードの前に「[$-言語コード]」を追加します。
例えば、英語表記の場合は「[$-409]」を使用します。

以下は具体的なコード例です。

Sub format変換()
 Dim Befor
  Befor= Cells(2, 3)
  Cells(5, 3) = Format(Befor, “[$-409]yyyy/mm/dd”)
End Sub

それでは実行してみましょう。

上記のコードを実行すると、セル”C5“には現在の日付が英語表記の「2023/07/3」という形式で表示されます。

⬛︎文字列の表示形式を変更する方法

文字列の表示形式を変更する際にも、Format関数を使用することができます。

・特定の文字列パターンを指定する

まず、特定の文字列パターンを指定してみましょう。
下図の見本をご覧ください。

今回は「VBA」という文字に「ABC」という文字を追加してみましょう。

例えば、文字列の先頭に「ABC」を追加する場合は、「“ABC” & 対象の文字列」という形式で指定します。以下は具体的なコード例です。

Sub format変換()
 Dim Befor
  Befor= Cells(2, 3)
  Cells(5, 3) = Format(Befor, “””ABC”” &@”)
End Sub

それでは実行してみましょう。

上記のコードを実行すると、セル”C5“には「ABC VBA」という文字列が表示されます。

・文字列を大文字または小文字に変換する

次に、文字列を大文字または小文字に変換してみましょう。
下図の見本をご覧ください。

文字列を大文字に変換する場合は、「“>”」関数を使用します。
小文字に変換する場合は、「“<”」関数を使用します。

以下は具体的なコード例です。

Sub format変換()
 Dim Befor
  Befor= Cells(2, 3)
  Cells(5, 3) = Format(Befor, “>”)
End Sub

それでは実行してみましょう。

ードを実行すると、セル”C5“には「VBA」という文字列が表示されます。

⬛︎よくあるエラーと対処法

・ “型不一致”エラー

 対策: Format関数の引数の型が正しく一致していることを確認してください。
例えば、数値型の引数を指定する場合は、文字列や日付型ではなく数値型のデータを使用してください。

・”無効な書式コード”

 対策: 使用する書式コードが正しい形式であることを確認してください。
書式コードには特定のルールがあります。

間違った形式の書式コードを使用している場合は、正しい書式コードを確認し、修正してください。

・”引数が不足しています”

対策: Format関数に必要な引数がすべて指定されていることを確認してください。
必要な引数が不足している場合は、引数を追加してください。

・”式が複雑すぎます”

対策: Format関数の引数が複雑すぎる場合に発生します。
このエラーを回避するためには、引数を単純化する必要があります。

長い式や複数の関数の組み合わせを使用する場合は、一時変数を使用して式を分割することを検討してください。

■練習問題

練習問題も別の記事でまとめているので是非参考にしてみてください!

⬛︎公式の説明

わかりやすいように説明したため公式と使用する語句が異なりますが
マイクロソフト公式の説明については下記のリンクを参照してください。☟

⬛︎まとめ

いかがだったでしょうか?

今回は、マクロVBAにおける表示の変更について「Format」関数を中心に解説しました。

数値や日付、文字列などのデータを特定の形式に整形する際に、この関数を活用することができます。

Format関数の使い方や具体的なコード例を通じて、セルの表示形式を柔軟に変更する方法を学びました。

 

ぜひ活用してみてください。

それでは次回の記事でお会いしましょう。

コメント