Excel VBA で数値形式を利用する
 
数字は私たちの日常生活の中でさまざまな形で現れます。日付、価格、パーセンテージ、分数、小数などがあります。これらはすべて異なって表示される場合がありますが、すべて値を意味します。
Excel と同じように、さまざまな形式の数値を処理できます。時刻と日付を処理する場合は Date と Time データ型を使用でき、パーセンテージを処理する場合は Percent を使用できます。
この記事では、Excel VBA の実践全体で数値を利用し、適切に処理するのに役立つ NumberFormat プロパティについて説明します。
数値 VBA に NumberFormat プロパティを実装する
このセクションでは、NumberFormat プロパティを使用して、セルの数値フォーマットを変更します。
構文:
Range.NumberFormat = [FormatCodes]
パラメーター:
| Range | フォーマットする範囲 | 
| [FormatCodes] | 使用する数値形式のタイプを表す事前定義された文字列。 | 
[フォーマットコード] マトリックス:
| フォーマット名 | フォーマットコード | 例 | 説明 | 
| —————– | ——————————————————– | —————– | —————————————————— | 
| 一般 | General | 1234567.89 | 特定の形式なしで番号を表示する | 
| 通貨 | $#,##0.00 | $1,234,567.89 | 一般的な金額として表示 | 
| 番号 | 0 | 1234567.89 | format は、数値をそのまま表示します | 
| 科学的 | 0.00E+00 | 1.23E+06 | 数値を指数形式に変換します | 
| 会計 | _($* #,##0.00_);_($* (#,##0.00);_($* ""-""??_);_(@_) | $123.00 | display the number used in 会計 | 
| 日にち | m/d/yy | 11/23/2021 | 日付と時刻のシリアル番号を表示する | 
| 時間 | [$-F400]h:mm:ss am/pm | 12:00:03 AM | 日付と時刻のシリアル番号を表示する | 
| パーセンテージ | 0.00% | 5.23 % | 値をパーセンテージ形式で表示します | 
| 分数 | # ?/? | 1/4 | 値を小数形式で表示する | 
| 特殊 | ;; | 000-00-0000 | リストとデータベースの値で使用される形式 | 
Sheet1 仮想ワークシートは、以下のサンプルコードの以下のすべての例で使用される参照値になります。
Sheet1:
 |    A    |      B      |      C    |
1| 1234.56 | 11/23/2021  | 93249812  |
2| 5       | 0.00004     | 0.25      |
以下のコードブロックは、一般フォーマットを出力します。
Sub FormatGeneral()
Range("A1").NumberFormat = "General"
Debug.Print Range("A1").Text
End Sub
FormatGeneral 出力:
1234.56 
以下のコードブロックは、通貨フォーマットを出力します。
Sub FormatCurrency()
Range("C1").NumberFormat = "$#,##0.00"
Debug.Print Range("C1").Text
End Sub
一般出力:
$93,249,812.00
以下のコードブロックは、Scientific フォーマットを出力します。
Sub FormatScientific()
Range("C1").NumberFormat = "0.00E+00"
Debug.Print Range("C1").Text
End Sub
FormatScientific 出力:
9.32E+07
以下のコードブロックは、アカウンティングフォーマットを出力します。
Sub FormatAccounting()
Range("A1").NumberFormat = "_($* #,##0.00_);_($* (#,##0.00);_($* ""-""??_);_(@_)"
Debug.Print Range("A1").Text
End Sub
FormatAccounting 出力:
 $ 1,234.56 
以下のコードブロックは、日付フォーマットを出力します。
Sub FormatDate()
Range("A2").NumberFormat = "m/d/yy"
Debug.Print Range("A2").Text
End Sub
FormatDate 出力:
1/5/00
以下のコードブロックは、時間フォーマットを出力します。
Sub FormatTime()
Range("B2").NumberFormat = "$-F400]h:mm:ss am/pm"
Debug.Print Range("B2").Text
End Sub
FormatTime 出力:
12:00:03 AM
以下のコードブロックは、パーセンテージフォーマットを出力します。
Sub FormatPercentage()
Range("A1").NumberFormat = "0.00%"
Debug.Print Range("A1").Text
End Sub
FormatPercentage 出力:
123456.00%
以下のコードブロックは、Fraction フォーマットを出力します。
Sub FormatFraction()
Range("C2").NumberFormat = "# ?/?"
Debug.Print Range("C2").Text
End Sub
FormatFraction 出力:
1/4
VBA 範囲で使用される NumberFormat のタイプを取得する
上記の例では、指定された範囲のフォーマットされた値を返しました。このセクションでは、指定された範囲で使用されるフォーマットタイプを取得します。
構文:
Range.NumberFormat
パラメーター:
| Range | フォーマットタイプを取得するためのセル範囲 | 
引き続き Sheet1 を参照して、以下のコードブロックの例は、指定された範囲で使用されるフォーマットタイプを返すことを示しています。
Sub GetFormattingType()
Debug.Print Range("B1").NumberFormat
End Sub
GetFormattingType 出力:
m/d/yyyy