簡體   English   中英

VBA將數組寫入范圍,導致運行時錯誤“ 7”:內存不足

[英]VBA Writing Array to Range Causing Run-Time Error '7': Out Of Memory

任務

我工作的VBA項目,其中我從存儲在一個表中的數據Variant Array ,做了一堆用在計算數據的Array ,這些計算的結果存儲在其他幾個Arrays ,然后最后我存儲所有的“結果陣列”在另一Variant Array和寫在一個新的工作表數組的范圍。

注意:自從我第一次編寫該過程以來,此過程一直運行良好。

問題

進行很小的邏輯更改后,我的最終Array將不再寫入指定的范圍。 我收到Run-time error '7': Out of memory嘗試時Run-time error '7': Out of memory 萬一這是我的問題,我改回了邏輯,但仍然收到錯誤。

在進行了一些研究之后,我嘗試在寫入范圍之前擦除所有數組(包括包含所有工作表數據的數組),但是那也不起作用。 我已經檢查了任務管理器,並顯示我的RAM具有很多可用空間(將近6K MB可用,超過1k Mb“可用”)。 (任務管理器顯示Excel進程使用了​​大約120 MB。)

代碼(摘要)

Dim R As Range  
Dim ALCount As Long  
Dim All(5) As Variant  
Dim sht As Worksheet
Dim Arr1() As Long
Dim Arr2() As Date
Dim Arr3() As Date
Dim Arr4() As Long
Dim Arr5() As String  

All(1) = Arr1
All(2) = Arr2
All(3) = Arr3
All(4) = Arr4
All(5) = Arr5      

Set R = sht.Cells(2,1)  
R.Resize(ALCount - 1, 5).Value = Application.Transpose(All)

更多細節

My device: Win 7 64-Bit  
Excel: 2010 32-Bit  
File Size: <20 MBs  
Macro Location: Personal Workbook  
Personal WB Size: < 3 MBs  

編輯:數組大小:773x5

對為什么會發生這種情況有任何想法嗎?

我發現了問題。

罪魁禍首是Arr5 (字符串數組)。 該數組中的每個元素設置如下:

StrVariable = StrVariable & "--" & StrVariable    
Arr5(ALCount) = StrVariable

我忘了在每次循環后都包含以下行來重置StrVariable

 StrVariable = vbNullString

結果意味着,通過773迭代,Arr5(773)的字符串長度很大……實際上如此之大,即使我的代碼可以處理數組,工作表也不能。

我通過在迭代200處停止並檢查All到表中的輸出發現了錯誤(在迭代200中, Arr5(200)的字符數已經接近3k)。

感謝您的時間,並為您解決此問題提供幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM