- ベストアンサー
変数のデータ型 Integer と Long
数値型を宣言する時に Integer と Longのどちらを使えばいいかの判断ができません。 例えば、 For i = 1 To 30000 Next というコードの場合は、最大数が30000なので Integerをでiを宣言すればいいのでしょうか? (30000以上になることはないとする) ここでLongで宣言した場合、どういうデメリットが発生しますか? メモリを多く確保するため、パソコンの動きが遅くなるのでしょうか?
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
確かにIntegerよりLongの方がメモリを喰う=遅くなる という考え方が正しいかもしれませんが、今現在のPCのスペックを 考えると誤差範囲(まず違いを体感する事はない)だと思います。 知識として覚えておくといった程度でしょうか。
その他の回答 (3)
- yucco_chan
- ベストアンサー率48% (828/1705)
私も最近までメモリを消費せず高速との思い込みでIntegerを多用していました。 が、とあるWebで、今時の32BitOS&CPUでは16bitのIntegerは意味の無い 過去の遺物でLongを使うべきとの記述を見ました。 真偽は分かりませんが、32BitOS&CPUで16bitのデータを扱うには返ってオーバーヘッドが 生じて遅くなったり、それを避けるために16Bitデータを擬似的に32Bitデータとして 扱うためにメモリの節約にならないとの解説に、私には正しい情報且つ納得できる ものでしたので、最近はLongを使うようにしています。 体感的には、何も変わりませんが。。。 不確かな情報ですが参考までに。
お礼
大変参考になりました。ありがとうございます。
- myRange
- ベストアンサー率71% (339/472)
そこら辺りのことはVBAのヘルプに載ってますが、 探し出せない時は、 「VBA データ型 一覧」などをキーにしてネット検索してみてください たっぷりヒットします。 例えば、下記サイト。 http://www.optimizm.jp/002/hensu_03.shtml また、質問のようにFor Nextでまわすくらいのことなら 処理スピードは、Integer,Long、殆ど変りないでしょう。 それよりもデータ型を覚えることが先です。 以上です。
お礼
わかりました。覚えます。ありがとうございます。
- Wendy02
- ベストアンサー率57% (3570/6232)
こんばんは。 私の記憶に間違いがなければ、現在は、Long 型のほうが速かったはずです。Integer 型は、16bit ですが、最近のパソコンは、CPUが32bit ですから、Integer 型は、一旦、32bit に変換されるので、Long 型のほうが処理スピードは速いという話です。 VBAの場合は、VBA用として割り当てられるメモリが小さいので、Integer によるメモリの節約の目的で使うのですが、目一杯に使う人はいないので、あまり大きな違いが現れないようです。VBAで速度がもっとも遅くなる原因は、実行時のオブジェクトの入れ出しの多さですね。
お礼
IntegerでもLongでもかわらなそうですね。有難うございました。
お礼
大した違いはなさそうですね。有難うございました。