2017-06-16 17 views
0

在Excel中創建VBA程序的過程中,我遇到了一個似乎沒有記錄在任何地方(迄今爲止我已經找到)的限制。使用某些特殊符號的內存分配奇怪

單元格內容限制記錄在0-32767個字符,但對於字符「@」,「 - 」,「+」和「=」我無法編寫VBA腳本來將這些字符添加到8192以外的單元格字符,這是足夠奇怪的四分之一32768.

在調試過程中,我創建了一個單獨的腳本,以嘗試此操作,以避免我的程序提出有關內存分配的任何其他問題。

Function Insert() 

    For i = 1 To 8199 
     Range("J13") = Range("J13") & "@" 
    Next 

End Function 

程序符連接「@」至細胞達(且包括)8192,然後用停止「運行時錯誤7內存不足」錯誤。它似乎不是一個單元格的限制,因爲一旦程序停止,我可以手動輸入更多符號給單元格。

我也嘗試手動輸入約1000個符號之前,我啓動程序,但它仍然在暫停8192

使用一個全尺寸標準的美國格式鍵盤的任何特殊字符標準時,不會出現此問題(除了我列出的4個之外)。

我認爲這可能是由於字符編碼和這些字符對應的內存要求,但我找不到任何信息,表明這四個符號的內存要求與我鍵盤上的任何其他標準符號不同。

有沒有人有任何洞察,爲什麼這可能會發生,並有潛在的解決方法?

是的,奇怪的是我有時需要一個單元格填充超過8192個這些類型的字符。

回答

0

這四個字符作爲一個公式的開始有效,但Excel specifications and limits狀態:

的公式內容的長度 - 8,192個字符

所以Range("J13") = String(8193, "@")會失敗(因爲它被解釋爲一個公式),但Range("J13") = "x" & String(8193, "@")將工作(因爲它不會被解釋爲公式)。


一種解決方法是使用Range("J13") = "'" & String(8193, "@")這將迫使細胞將被視爲文本,與它只是8193 "@"字符。


注:我抓我的頭試圖找出爲什麼@符號可以用來啓動一個公式(和剛剛被進入之後更改爲=)。我知道我已經看到它在某個地方被使用,所以我搜索了它並發現了一個讓我想起那是我們如何在Lotus123中開始一個公式的頁面。所以它已經被合併到Excel中,以允許ex-Lotus123用戶繼續以通常的方式工作。 (這與爲什麼/調出菜單的原因相同。)