Vba 具有某些特殊符号的内存分配奇点

Vba 具有某些特殊符号的内存分配奇点,vba,excel,memory-management,Vba,Excel,Memory Management,在用Excel创建VBA程序的过程中,我遇到了一个似乎在任何地方都没有记录的限制(到目前为止我已经找到了) 单元格内容限制记录为0-32767个字符,但是对于字符“@”、“-”、“+”和“=”,我无法编写VBA脚本将这些字符添加到超过8192个字符的单元格中,这奇怪地足够32768的1/4 在调试过程中,我创建了一个单独的脚本来尝试这样做,以避免我的程序在内存分配方面出现任何其他问题 Function Insert() For i = 1 To 8199 Range("

在用Excel创建VBA程序的过程中,我遇到了一个似乎在任何地方都没有记录的限制(到目前为止我已经找到了)

单元格内容限制记录为0-32767个字符,但是对于字符“@”、“-”、“+”和“=”,我无法编写VBA脚本将这些字符添加到超过8192个字符的单元格中,这奇怪地足够32768的1/4

在调试过程中,我创建了一个单独的脚本来尝试这样做,以避免我的程序在内存分配方面出现任何其他问题

Function Insert()

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

End Function
程序将“@”连接到8192之前(包括8192)的单元格,然后由于“运行时错误7内存不足”错误而停止。这似乎不是一个单元格限制,因为一旦程序停止,我可以手动向单元格输入更多符号

我还尝试在启动程序之前手动输入大约1000个符号,但它仍然在8192处停止

在全尺寸标准美国格式键盘上使用任何特殊字符标准时(我列出的4个除外),不会出现此问题

我认为这可能是因为字符编码和这些字符的相应内存需求,但我找不到任何信息表明这四个符号的内存需求不同于我键盘上的任何其他标准符号

有人知道为什么会发生这种情况,以及可能的解决办法吗


是的,奇怪的是,有时我确实需要在单元格中填充8192个以上的此类字符。

这四个字符作为公式的开头是有效的,但说明:

公式内容长度-8192个字符

因此
Range(“J13”)=String(8193,“@”)
将失败(因为它被解释为一个公式),但
Range(“J13”)=“x”&String(8193,“@”)
将起作用(因为它不会被解释为一个公式)


一种解决方法是使用
范围(“J13”)=“'”和字符串(8193,“@”)
,这将强制将单元格视为文本,其中仅包含8193个
“@”字符


注意:我当时挠头想弄明白为什么可以使用
@
符号来启动公式(输入后就变成了
=
)。我知道我看到它在某处被使用过,所以我在谷歌上搜索了一下,发现了一个页面,提醒我这就是我们在Lotus123中创建公式的方式。因此,它已经被合并到Excel中,以允许前Lotus123用户继续以他们通常的方式工作。(这与
/
打开菜单的原因相同。)