以下のマクロ実行時にたまにオーバーフローが出てしまい
マクロが止まってしまうときがあります。
毎回出るのであれば、原因を突き止めやすいのすが、
出なくなると全く出なくなりとても困っています。
もしわかる方がいらっしゃいましたら、御教授して頂けると
幸いです。
内容:データが元々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
上記☆のところでオーバーフローで止まったりします。。。
No.4ベストアンサー
- 回答日時:
NO.2です。
>ただやはり、Integerでもうまくいくときがあるのが???
19列(S列)の全ての値が
32,767未満だったらエラーにならないはずですが
ヘルプより
整数型 (Integer) の変数は、16 ビット (2 バイト) の変数で、
-32,768 ~ 32,767 の範囲の値をとります。
ありがとうございました。
意図していない箇所で32767を越えた値が入っておりました。
大変お騒がせしてごめんなさい!!
何度も本当にInteger宣言していて、32767以上が入っていない
かを確認することを気付かせてくれて本当にありがとうござい
ました。
No.3
- 回答日時:
こんにちは。
質問の回答ではないですが。
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
このようになります。どうでしょうか。
No.2
- 回答日時:
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
と宣言します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) vbaのvlookup関数エラー原因を教えていただけないでしょうか。 3 2022/04/25 16:16
- Visual Basic(VBA) VBA横データを縦にしたいです 2 2023/08/08 19:38
- Visual Basic(VBA) マクロ実行時、自動で背景色を変えたい。 C列にあるチェックボックスをチェックするとB列に「TRUE」 4 2022/11/08 11:14
- Visual Basic(VBA) 改行ごとに行を追加し、数量を分割 4 2023/07/11 16:39
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Visual Basic(VBA) ①ExcelVBAでカレンダーを作り、別のユザーフォームで日付を入力したいのですがエラーになります。 1 2023/02/17 18:39
- Visual Basic(VBA) userformでSheetを選択して開くコード 1 2023/05/15 16:27
- Excel(エクセル) VBAで組み合わせ算出やCOUNTIFSの処理を高速化したいです。 4 2022/04/07 02:38
- Visual Basic(VBA) 複数シートの複数列に入力されているデータを重複なしで抽出するVBAを作りたいです。 9 2022/06/17 10:33
- Visual Basic(VBA) ExcelVBAで、index、match関数を使用して、指定範囲に出力したい 3 2022/10/18 21:53
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
シグナル 6(SIGABRT)とは?
-
【C#/Java?】try-catchでcatch...
-
IF文に時間(何時から何時ま...
-
VBAでBook読み込み時の非表示方...
-
特定のファイルを他のプロセス...
-
VB6にてネットワーク上にある共...
-
【C#】Page_Loadさせない方法に...
-
ProgressBarを用いる場合、全体...
-
マクロで、次のコードへ行く前...
-
VBA For Each 〜 複数条件について
-
VBAの進捗状況をリアルタイ...
-
特定の名前のオートシェイプの...
-
エクセルVBAでロックをかけたい
-
vbaレポート名の指定が間違って...
-
DVD FLICK 最後の書き込み段階...
-
private subモジュールを他のモ...
-
vbaのエラー対応(実行時エラー...
-
【VBA】IE操作し過ぎてアクセス...
-
StatusStripの表示が更新されな...
-
どう増強すべきか
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【C#/Java?】try-catchでcatch...
-
IF文に時間(何時から何時ま...
-
vbaのエラー対応(実行時エラー...
-
マクロで、次のコードへ行く前...
-
private subモジュールを他のモ...
-
特定の名前のオートシェイプの...
-
シグナル 6(SIGABRT)とは?
-
Excel VBA セルの名前があるか...
-
特定のファイルを他のプロセス...
-
どうやってもFor文を抜けてしま...
-
VBA For Each 〜 複数条件について
-
ドリブン??
-
VB6にてネットワーク上にある共...
-
【VBA】エラー処理で別プロシー...
-
VBA 複数の行を高速で削除する...
-
【C#】Page_Loadさせない方法に...
-
どう増強すべきか
-
エクセル VBAで複数セル選択時...
-
UWSCのTHREADについて
-
Functionで戻り値を複数返す方法
おすすめ情報