[[20201115220750]] 『VBA 2次元配列(variant) 特定ブック オーバーフ』(パオパオ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『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


(型が抜けていたので追記しました。)
確認ありがとうございます。
下記になります。
最大行→303(Double)
最大列→51(Double)
i→4(Double)
アドレス→$A$1:$CM$323
該当ブックの設定の何かがおかしくなったのかなとおもったのですが、
非表示にもなってないのです。
コードを抜粋しすぎてますね。
よろしくお願いします。
(パオパオ) 2020/11/15(日) 23:19


すいません。基本コードは下記になります。
よろしくお願いします。

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

論点ではないですが、行番号、列番号は整数ですからDoubleを使う意味はありません。
Longを使うのが普通です。
多数のブックの配列を、同時にひとつの配列に持つようですが、
どんな目的なんでしょう。
多数のブックを開き、なおかつ同時にデータを別の配列に持つことが、
エラーの要因になっている可能性もありますね。

(γ) 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.