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