• ベストアンサー

VBA 100億になると#が自動で付く

下記のコードを見てください。 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を付けたら勝手に付きました。 どうしてなのでしょう? 不思議です。

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.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
dfghhj
質問者

お礼

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

関連するQ&A