2009/10/15(Thu) 17:47:38 編集(投稿者)
> 'DataArray定義
> Dim DtArCol, DtArRow As Double
> DtArCol = 0
> For Each dtColumn In dt.Columns
> DtArCol = DtArCol + 1
> Next
> DtArRow = 0
> For Each dtRow In dt.Rows
> For i = 0 To dt.Columns.Count - 1
> DtArRow = DtArRow + 1
> Next
> Next
このループが気になりますね。
仮にですが、500行12列のデータとして考えます。
DtArCol(列数)は12って求められるけど、
DtArRow(行数)は二重ループになってるから、12×500=6000になりますよね。
1行目に列名を入れる行が必要だとしても、500+1=501行でいいのでは?
(配列が12列分用意されていて、その配列一つ一つにデータを区切って代入しているわけですから)
というわけで、Rangeを確保しているこの処理
>Range = Range.resize(DtArRow, DtArCol)
Range = Range.resize(6000, 12) になってしまってます。
DataArrayは501行分, 12列分のデータしか入力してないから、
「宣言はしたけど、値がない」DataArrayが存在するのがもしかして原因の一つかもしれません。
>Excelオブジェクト
了解です!