みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

オーバーフローで困っています

米国の知人に組んでもらったマクロなのですが、
データを取り込むときに「実行時エラー'6' オーバーフローしました」の
エラーメッセージが表示されます。

なぜかその知人のPCでは同じデータを取り込んで、計算等の操作が可能です。
ソルバーアドインの設定等のアドバイスを受け、いろいろ試してみたのですが、
解決できません。

OSやOfficeが日本語版と英語版の違いで起こる可能性が高いよう思われるのですが、原因が皆目見当つきません。

デバッグを実行すると「bp = Asc(Mid(Pass, ip, 1))」が黄色くハイライトされます。(下記参照) 

解決方法がわかる方がいらっしゃいましたら、回答下さい。
宜しくお願い致します。

While (InStr(1, Pass, Chr(13)) = 1)
Pass = Mid(Pass, 2)
Wend
If (Len(Pass)) Then
Pass = Pass & Chr(13)
End If

l = Len(t)
While (Len(Pass))

lp = InStr(1, Pass, Chr(13))
s = ""
i = 1
ip = 1
While (i <= l)
If ip = lp Then ip = 1
bp = Asc(Mid(Pass, ip, 1)) (←このラインが黄色でハイライト)
b1 = Asc(Mid(t, i, 1))
b2 = b1 Xor bp
s = s & Chr(b2)
i = i + 1
ip = ip + 1
Wend
t = s

Pass = Mid(Pass, lp + 1)
While (InStr(1, Pass, Chr(13)) = 1)
Pass = Mid(Pass, 2)
Wend

Wend

s = ""
For i = 1 To l
b1 = Asc(Mid(t, i, 1))
s = s & Chr(b1 Xor bt)
bt = IIf(bt = 255, 0, bt + 1)
Next

投稿日時 - 2009-03-12 17:24:24

QNo.4790854

すぐに回答ほしいです

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

米国人はアルファベットしか使わないからAsc()は0~127の範囲となる。
しかし、日本では漢字を使うためAsc()は-32768~32767の範囲となる。
対策は、
・英数字のみとして漢字を使わない。
・bp,b1,b2等をInteger型にする。
のどちらかです。

投稿日時 - 2009-03-12 21:35:53

お礼

なるほどやはり日本語と英語の対応でエラーが発生していたということですね。
ということは、このライン以外にも類似するバグがある可能性が大きいですね。
対応策をマクロの作成者と相談してみます。
回答ありがとうございました。

投稿日時 - 2009-03-12 22:46:34

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問