[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『VBA 2次元配列(variant) 特定ブック オーバーフロー』(パオパオ)
いつもお世話になっております。
いままで順調に動いていたのですが、
突然、特定ブックのみ、「オーバーフロー」となてしまいます。
チェック箇所のヒントを教えていただけないでしょうか?
複数ブックを開けてセル範囲指定し、
データを2次元配列(Data)として格納
→Variantオーバーフロー
1.範囲指定は他のブックにコピペでうまくいっているようでした
2.他のブックの同じ列数分は、うまくいっています。
Dim Data()as Variant
With Workbooks(BookName).Sheets(Sheet)
Data(i) = .Range(.Cells(1,1), .Cells(最大行,最大列)).value End With
< 使用 Excel:Excel2010、使用 OS:Windows10 >
当該ブックの問題のシートに於いて、 これらは、どんな型と値なのですか? ↓ 最大行, 最大列, i
(半平太) 2020/11/15(日) 22:48
>いままで順調に動いていたのですが
動いていたんですか? ちょっと信じられない。 (Why) 2020/11/15(日) 23:15
最大行→303
最大列→51
i→4
アドレス→$A$1:$CM$323
該当ブックの設定の何かがおかしくなったのかなとおもったのですが、
非表示にもなってないのです。
コードを抜粋しすぎてますね。
よろしくお願いします。
(パオパオ) 2020/11/15(日) 23:17
Dim Data()as Variant
Dim 最大行 As Double
Dim 最大列 As Double
Dim i列 As Double
ReDim Data(UBound(myFile))
For i=1 to Ubound(Data)
With Workbooks(myFile(i)).Sheets(1) Data(i) = .Range(.Cells(1,1), .Cells(最大行,最大列)).value End with
Next i
(パオパオ) 2020/11/15(日) 23:46
その特定ブックのどこかのシートのどこかのセルが、
突然と言っている前のタイミングで変更になっていないですか。
ブックが特定できているので、シートを特定して、セルを特定して
いけば、いいのでは。
シートとセルをFor Eachで回して、イミディエイトウィンドウに、
シート名とセルアドレスを吐き出しておけば可能かと。
こんな感じでどうでしょう。
Dim buf,ws As WorkSheet,cl As Range For Each ws In WorkSheets For Each cl In ws.Cells Debug.Print ws.Name,cl.Address buf=cl.Value Next cl Next ws ※コンパイルチェックしていません。 (tkit) 2020/11/16(月) 09:31
(γ) 2020/11/16(月) 12:22
こんばんは! 配列を取得する時に セルの表示に#####などが含まれると オーバーフローした経験があります。 (SoulMan) 2020/11/16(月) 21:16
SoulManさんに記載いただいた、
「セルの表示に#####」が、
データ取得がうまくいかなくなった日のデータから含まれていました。
情報、言葉の足りない質問にも、
アドバイス頂きありがとうございました。
教えていただいた方法等でチェックしていき、
何とかたどりつきました。
ありがとうございました!!
(アドバイス頂いた方法で、コード修正します。)
(パオパオ) 2020/11/16(月) 22:18
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.