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

vb6.0についてお聞きいたします。
こちらの問題は、visual studio 2005のvbでは生じません。

windows xp上で動かしているのですが、どうやら
何もしていないあるパラメータに32000ぐらいの数字よりも大きな
数字をいれるとエラーになってしまいます。

それも、integer型、long型、double型のすべての型で生じます。
そういうものなのでしょうか?
HPをいろいろ見ましても、long型で20億ぐらいは
表現できるように書いてあるのですが。

A 回答 (1件)

手元のExcel VBA(VB.NET系ではなくVB6系)で実験してみました


LongとDouble共に再現しません。
Integerの場合
http://homepage1.nifty.com/MADIA/vb/vb_bbs2/2003 …

>VB6ではIntegerが16bit、Longが32bitでしたが、
NETではIntegerが32bit、Longが64bitに変更されてますので。

割と有名ではあるんですが、Microsoft公式の文書を探すのが面倒くさいので放置。(2^16)/2 - 1 = 32767(正と負があるから。VB6のIntegerは-32768~32767しか取れない)
==============================
Option Explicit

Sub hoge()

Dim a As Long

a = 33000
MsgBox (a)


End Sub
===========================
Option Explicit
Sub hoge2()

Dim a As Double

a = 33000
MsgBox (a)


End Sub
=====================
Option Explicit
Sub hoge3()

Dim a As Integer

a = 33000
MsgBox (a)


End Sub
    • good
    • 0
この回答へのお礼

確かにおっしゃるとおり
このプログラムをexcelで動かすと
私の言うようにはなりません。(今、自宅で確認しました。)

ところが、
-------------------
Sub hoge()

Dim a As Double
a = 33 * 1000
MsgBox (a)

End Sub
----------------
では、オーバーフローします。
しかし、
----------------
Sub hoge()

Dim a As Double
a = 33
a=a*1000
MsgBox (a)

End Sub
------------------
なら大丈夫なようです。
※普段はC++ユーザなので、混乱しました。
ありがとうございました。

お礼日時:2006/12/26 20:52

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