INDEX
Currencyの概要
高精度な金額計算を行う VBAの予約語 | ||
Currency 概要 Currency 型は、VBAで通貨や金額を扱うためのデータ型で、高精度な小数計算が可能です。浮動小数点型(Single, Double)と異なり、丸め誤差が発生しにくいため、金額計算に適しています。 わかりやすく説明 金額や小数の計算を正確に行うためのデータ型。 |
||
|
Currencyの基本的な使い方
以下の例では、Currency型を使って計算を行います。
Sub TestCurrency()
Dim price As Currency
Dim tax As Currency
Dim total As Currency
price = 1999.99
tax = price * 0.1
total = price + tax
MsgBox "税込価格: " & total
End Sub
解説:
Dim price As Currency
: Currency型の変数を定義。税額 = 価格 × 0.1
: 税率計算を行う。- Currency型を使うことで、丸め誤差なく正確な計算が可能。
CurrencyとDoubleの比較
Currency型は小数計算で丸め誤差が少ないため、精度が求められる計算に向いています。
Sub CompareCurrencyAndDouble()
Dim d As Double
Dim c As Currency
d = 0.1 * 3
c = CCur(0.1) * 3
MsgBox "Double: " & d & vbCrLf & "Currency: " & c
End Sub
解説:
- Double型は丸め誤差が発生し、計算結果が
0.30000000000000004
になることがある。 - Currency型は丸め誤差がなく、
0.3
になる。
Excel VBAでのCurrency型の活用
Excelのセルから数値を取得し、金額計算を行う例です。
Sub CalculateTotal()
Dim unitPrice As Currency
Dim quantity As Integer
Dim total As Currency
unitPrice = Range("A1").Value
quantity = Range("B1").Value
total = unitPrice * quantity
Range("C1").Value = total
End Sub
解説:
- セルA1の単価、B1の数量を取得し、金額を計算。
- Currency型を使うことで正確な計算が可能。
通貨記号を表示する
Currency型の値をフォーマットして、通貨記号付きで表示する方法です。
Sub ShowCurrencyFormat()
Dim price As Currency
price = 12345.67
MsgBox Format(price, "Currency")
End Sub
解説:
Format(値, "Currency")
: 現在の地域設定に応じた通貨フォーマットを適用。- 日本の環境なら「¥12,345」などの表示になる。
Currency型の制限
- 小数点以下4桁まで: より高精度な計算が必要な場合はDouble型を使用。
- 最大値は922,337,203,685,477.5807: これを超える値は扱えない。
- 小数点以下の精度が必要な場合は他の型を検討: 例外的に5桁以上の精度が必要ならDecimal型を使用する。
よくある質問
- Q: Currency型とDouble型の違いは?
- A: Currency型は小数点以下4桁までの固定精度で計算できるため、丸め誤差が発生しにくい。
- Q: Currency型の最大値は?
- A: ±922,337,203,685,477.5807 までの範囲を扱えます。
- Q: 金額計算でなぜCurrency型を使うべき?
- A: 浮動小数点数(Double)では丸め誤差が発生しやすいため、Currency型の方が正確な計算が可能。
まとめ
- Currency型は金額計算や高精度な小数計算に適したデータ型。
- 丸め誤差が少なく、金融計算や請求書処理に便利。
- Excel VBAでは、セルの値をCurrency型で取得し、金額計算に活用可能。
- 最大値は ±922兆まで対応できるが、小数点以下は4桁まで。