質問

以下のマクロ実行時にたまにオーバーフローが出てしまい
マクロが止まってしまうときがあります。

毎回出るのであれば、原因を突き止めやすいのすが、
出なくなると全く出なくなりとても困っています。

もしわかる方がいらっしゃいましたら、御教授して頂けると
幸いです。



内容:データが元々10個単位であり、Sheet1に500×10、
Sheet2に500×10のデータを2次元配列に格納する。


Dim RES_CAM1(1 To 4000, 1 To 10) As Integer
Dim RES_CAM2(1 To 4000, 1 To 10) As Integer

Sub Macro10()
'
'
Dim i, j As Integer

....................................................
....................................................

Sheets("Sheet1").Select
For i = 1 To 500
For j = 1 To 10
RES_CAM1(i, j) = Cells((i - 1) * 10 + j, 19) ← ☆
Next j
Next i

Sheets("Sheet2").Select
For i = 1 To 500
For j = 1 To 10
RES_CAM2(i, j) = Cells((i - 1) * 10 + j, 19) ← ☆
Next j
Next i


....................................................
....................................................

End Sub



上記☆のところでオーバーフローで止まったりします。。。

通報する

回答 (4件)

NO.2です。

>ただやはり、Integerでもうまくいくときがあるのが???
19列(S列)の全ての値が
32,767未満だったらエラーにならないはずですが

ヘルプより
整数型 (Integer) の変数は、16 ビット (2 バイト) の変数で、
-32,768 ~ 32,767 の範囲の値をとります。

この回答へのお礼

ありがとうございました。
意図していない箇所で32767を越えた値が入っておりました。
大変お騒がせしてごめんなさい!!

何度も本当にInteger宣言していて、32767以上が入っていない
かを確認することを気付かせてくれて本当にありがとうござい
ました。

こんにちは。

質問の回答ではないですが。

Sheet1とSheet2に対して、同じ処理をしていますね。しかもシートを開く必要がない処理です。
たいていの処理はSelectやActineをしないで出来ます。あと、プロパティは省略しない方がいいです。
2つをまとめると

For i = 1 To 500
For j = 1 To 10
RES_CAM1(i, j) = Worksheets("Sheet1").Cells((i - 1) * 10 + j, 19).Value
RES_CAM2(i, j) = Worksheets("Sheet2").Cells((i - 1) * 10 + j, 19).Value
Next j
Next i

このようになります。どうでしょうか。

この回答へのお礼

ありがとうございました。
なるほど、こっちの書き方のほうがスマートっぽいですね。

19列(S列)の値が32,767を越えた時エラーになります。
RES_CAM1,RES_CAM2 は、LONGで宣言すべきです。

質問とは直接関係ありませんが、
Dim i, j As Integerと宣言すると
i はバリアント型になります。
Dim i As Integer, j As Integer
又は、
Dim i As Integer
Dim j As Integer
と宣言します。

この回答へのお礼

ありがとうございました。

ただやはり、Integerでもうまくいくときがあるのが???
になっています。

ぱっと見て思っただけですが、
Dim RES_CAM1(1 To 4000, 1 To 10) As Long
Dim RES_CAM2(1 To 4000, 1 To 10) As Long

でもダメですか?Integerで扱える範囲を超えているものがあるだけのように感じましたが…

この回答へのお礼

ありがとうございました。
2の方もおっしゃられていたようにLongですか。
配列に入れるデータの中身が-32767~32768までだったので
Integer宣言したのがまずかったのかな。

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

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

新しく質問する

注目の記事

おしトピアプリ登場記念!コメントで最大1万円分のギフト券があたる!

話題のトピックにさくっとコメントできる「おしトピ」にAndroid版アプリに続きiPhoneアプリも登場! どちらかのアプリをダウンロードして指定のオーダーにコメントした方に抽選で最大1万分のアマゾンギフト券をプレゼント! フジテレビ出身のフリーアナウンサー長谷川豊氏の質問にも回答受付中!

このQ&Aを見た人が検索しているワード


新しく質問する

このカテゴリの人気Q&Aランキング

毎日見よう!教えて!gooトゥディ