Excel VBAで変数宣言されていないプログラムに’option explicit’をつけて全ての変数に宣言文を付け加えました。

ところがこのプログラムを実行すると「オーバーフロー」エラーが発生してしまいます。
宣言の仕方が悪いと思われるのですがVBAのメモリ管理に関して熟知していないのでよくわかりません。どなたか教えて頂けないでしょうか?
なお、作成したプログラムはXMLを解析するものでループ制御を多用しており、サブルーチンで細かく切り分けています。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2004/09/05 15:02:21
  • 終了:--

回答(3件)

id:upride No.1

upride回答回数220ベストアンサー獲得回数12004/09/05 15:19:28

ポイント20pt

URLダミーです

宣言仕方がまずかったのではないでしょうか

宣言前は小数が入ってる変数を、int型で宣言してみたり・・

とかが考えられます

id:stray_sheep

ありがとうございます。

int宣言した変数に少数の値を入れようとした、

ということでしょうか?

今回のプログラムでは小数は出てきませんが

似たようなことをやってしまっているのかも知れませね。調べてみます。

2004/09/05 15:38:39
id:hidemi No.2

hidemi回答回数1ベストアンサー獲得回数02004/09/05 15:31:07

ポイント20pt

はじめまして。

私の経験としては変数宣言することによって、今まで自動的に型変換されていた変数に、型を超えるデータが詰め込まれ、オーバーフローしたものと思われます。

エラー時に何か変数がオーバーフローした旨のメッセージが表示されていませんか?

単純な話、Int型のループカウンタにLong型のカウンタ値が入ってしまうとか。またあまり参考になるかわかりませんが算術時の場合の回避例が載っているURLを紹介いたします。

id:stray_sheep

はじめまして。ありがとうございます。

やはり、型宣言がまずかったようですね。

オーバーフローと言われて「メモリが解放されていないのでは?」と早とちりしてしまいました。

2004/09/05 15:49:21
id:kamicha1 No.3

kamicha1回答回数94ベストアンサー獲得回数02004/09/05 15:37:59

ポイント20pt

http://www.moug.net/

スキルアップ・問題解決はモーグにおまかせ! 情報コミュニティサイト モーグ

URLは、ダミー(Excel等関連)です。

整数型(Integer)の範囲外の数値を使うのに、整数型(Integer)で変数を宣言しているからではないでしょうか?

Integerではなく、Longにしてみればいいと思います。

たとえば、次のマクロを実行してみてください。

TestNGだけオーバーフローします。

Sub TestNG()

Dim i As Integer

For i = 1 To 32768

i = i + 1

If i > 32760 And i < 32770 Then MsgBox i

Next

MsgBox ”処理結果は” & i & ”です”

End Sub

Sub TestOK()

Dim i As Integer

For i = 1 To 32767 ’整数型(Integer)の範囲は-32768〜32767

i = i + 1

If i > 32760 And i < 32770 Then MsgBox i

Next

MsgBox ”処理結果は” & i & ”です”

End Sub

Sub TestOK2()

Dim i As Long

For i = 1 To 32768 ’長整数(Long)の範囲は-2147483648〜2147483647

i = i + 1

If i > 32760 And i < 32770 Then MsgBox i

Next

MsgBox ”処理結果は” & i & ”です”

End Sub

id:stray_sheep

サンプルまでつけて頂き、ありがとうございます。

どうやらXML上の日付データを数値として取り込もうとしていたようです。

泥沼にはまる前に助けて頂き、皆さんありがとうございました。

2004/09/05 15:56:18

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません