サイトについて      連絡先   検索

VBA 数値の操作

はじめに

Excel VBA の 数値 (Integer など) を操作する方法を紹介します。

VBA の数値型の計算、四捨五入、比較などを紹介します。

型によって整数のみや小数ありなど扱える範囲が異なります。

数値型

数値型には整数のみや少数を扱うものなど、値の範囲に種類があります。

型名 データ型 値の例や範囲
Byteバイト型0 ~ 255 の正の整数
Integer整数型-32,768 ~ 32,767 の整数
Long長整数型-2,147,483,648 ~ 2,147,483,647 の整数
Single単精度浮動小数点型負:-3.402823E38 ~ -1.401298E-45
正:1.401298E-45 ~ 3.402823E38
Double倍精度浮動小数点型負:-1.79769313486231E308 ~ -4.94065645841247E-324
正:4.94065645841247E-324 ~ 1.79769313486232E308
Currency通貨型-922,337,203,685,477.5808 ~ 922,337,203,685,477.5807

この他に変数として宣言できませんが VBA で最大の桁数を持つ Decimal 型が存在します。Variant 型に CDec 関数を使用したときだけ使用できる型です。

型名 データ型 値の例や範囲
Decimal10 進型少数なしの最大値:79,228,162,514,264,337,593,543,950,335
少数ありの最大値:7.9228162514264337593543950335

Dim d As Variant
d = CDec(7.92281625142642E+28) ' Decimal 型になる

数値の範囲を超えた値を代入するとオーバーフローエラーが発生します。


Dim i As Integer
i = 50000 ' オーバーフロー

どの型で宣言するかは、通常は Integer にします。その範囲で収まらないなら Long や Currency などより大きい型を選択します。小数が必要なら Double にします。

数値の計算

演算子」の算術演算子で数値を計算します。

演算子 演算名 使用例 結果
+足し算1 + 23
-引き算2 - 11
*掛け算2 * 36
/割り算7 / 23.5
\割り算の商7 \ 23
Mod割り算の余り7 Mod 21
^べき乗2 ^ 38

Dim i As Integer
i = 1 + 2
Debug.Print (i) ' 3

Dim d As Double
d = 7 / 2
Debug.Print (d) ' 3.5

四捨五入

小数の持った数値を整数型に代入すると自動で整数になるように偶数丸めされます。偶数丸めとは「1.5 → 2」、「2.5 → 2」、「3.5 → 4」のように、小数の値が 5 のときに偶数になるように丸められることです。海外ではこれが一般的です。


Dim i As Integer  
Dim f As Single

f = 1.4
i = f
Debug.Print (i) ' 1

f = 1.5
i = f
Debug.Print (i) ' 2

f = 1.6
i = f
Debug.Print (i) ' 2

f = 2.4
i = f
Debug.Print (i) ' 2

f = 2.5
i = f
Debug.Print (i) ' 2

f = 2.6
i = f
Debug.Print (i) ' 3

これは「Round 関数」を使って四捨五入しようとしたときと同じです。


Dim i As Integer  
Dim f As Single
  
f = 1.5  
i = Round(f)
Debug.Print (i) ' 2

f = 2.5
i = Round(f)
Debug.Print (i) ' 2

f = 3.5
i = Round(f)
Debug.Print (i) ' 4

日本で一般的な四捨五入をするには「Format 関数」を使ってFormat(数値, "0")のようにします。


Dim i As Integer  
Dim f As Single
  
f = 1.5
i = Format(f, "0")
Debug.Print (i) ' 2

f = 2.5
i = Format(f, "0")
Debug.Print (i) ' 3

f = 3.5
i = Format(f, "0")
Debug.Print (i) ' 4

少数の誤差

Single や Double 型の浮動小数点型では小数点の計算で誤差がでることがあります。


Dim f As Single
f = 0.5 - 0.4 - 0.1
Debug.Print (f) ' -2.77555756156289E-17 ' 本当は 0 にしたい

こういうときは Currency 型を使用するか、一度整数にしてから計算します。


' Currency 型を使用する
Dim c As Currency
c = 0.5 - 0.4 - 0.1
Debug.Print (c) ' 0

' 整数にしてから計算する
Dim a As Single
Dim b As Single
Dim c As Single
a = 0.5 * 10
b = 0.4 * 10
c = 0.1 * 10

Dim f As Single
f = (a - b - c) / 10
Debug.Print (f) ' 0

数値を比較

数値の比較には「演算子」の比較演算子を使用します。

演算子 演算名 使用例 結果
=等しい1 = 2False
<>等しくない1 <> 2True
>大きい1 > 2False
<小さい1 < 2True
>=以上1 >= 2False
<=以下1 <= 2True

If 10 = 10 Then

End If

If 9 < 10 Then

End If

関連ページ