dポイントプレゼントキャンペーン実施中!

下記のコードを見てください。

Option Explicit

Sub test1()
Dim i As Long
i = 1000000000
End Sub

Sub test2()
Dim i As Long
i = 10000000000#
End Sub

test2の#は私が付けたものではありません。
test1より一つ多く0を付けたら勝手に付きました。

どうしてなのでしょう?
不思議です。

A 回答 (1件)

こんばんは。



i = 10000000000# '←リテラル値には、Double 型のマークが付きます。

i = 2147483647 '←Long型の最上値
i = 2147483648# '←Double型

i が、Long 型ですと、オーバーフローの実行時エラーが発生します。

型宣言文字は、このようなものがあります。
% ... Integer, ! .... Single, & ... Long, # ... Double, @ ... Currency

ですから、2147483647 より以上は、Double 型かCurrency 型が、VBAの範疇のデータ型になります。

Sub test3()
Dim i As Variant
i = 10000000000@
End Sub

として、ステップモード(F8)で動かしてみると、i の変数は、Variant/Currency になっているはずです。

参考URL:http://home.att.ne.jp/zeta/gen/excel/c04p16.htm
    • good
    • 0
この回答へのお礼

ありがとうございました。数字なら何でも良い訳ではなさそうですね。

お礼日時:2009/10/19 22:09

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!