質問: i + 1 loop erase ans exit sub errend: msgbox err.description & vbcrlf & "これ以上の配列を設定できません。" & vbcrlf & "上限は" & i & "です。" erase ans err.clear end sub
回答: こんにちは。 string変数のメモリの理論上の上限が、2gbであるけれども、microsoft 側では、配列の上限は、使用する保管メモリのバイト数ではなく、要素の合計数と言っています。(これは、過去の話だったかもしれません。) http://msdn.microsoft.com/ja-jp/library/b388cb5s(v=vs.90).aspx その他では、「オートメーションを利用して、excelに渡す配列の制限」(これも昔の話) http://support.microsoft.com/kb/177991/ja 検索してみると、かなりの数の書き込みで、同じテーマの内容が出てきますが、明確な回答を見れません。 いろんな人が、あれこれ言っていますが、そこから、microsoft で、このような文章が出てきました。 http://msdn.microsoft.com/en-us/library/b388cb5s%28vs.80%29.aspx maximum size the article is a bit vague about the maximum size of the array. i have 32-bit machine with 3.5gb of memory and 32bit マシーンで3.5gbのメモリを搭載しているが、 dim arrdailymatrix() as double redim arrdailymatrix(1 to 233, 1 to 10, 0 to 10000) メモリの限界を越えたと出てきました。メモリの限界の正確の大きさは知ることかできませんが、3次元での最大のサイズの調整は可能だという話でしかありませんが、この数字は、各掲示板によっても違うようです。人によっては、500mbを越えないとも書いているようです。 他の掲示板で書かれている「201185*151」の要素数に関しては、そこまでは届かないようです。 moji="01,02,03,04", 11 byte*2(unicode) =22 byte (ただし、string型が持つ本来のメモリ数は入れていません。) この文字列に対して、ご質問に書かれている要素数の限界値と、この要素数とも、だいたいの数字は、合っているようです。ただし、アプリ内で使用されているメモリにも影響を受けるようです。 さて、現実の問題として、理論値は別として、果たして、何百万もの要素数を持った配列を作る必要性があるのか、というところに行き着いてしまうと思います。格納は簡単には出来たけれども、その後の処理で、シーケンシャルで扱えば、かなりの手間を掛けてしまうことにもなります。このままでは、それを、どう扱うかという実際の作業を考えなければ、単なる理論値だけの話に終わってしまうと思います。