VBA单元格复制字符限制



我的VBA代码的一部分涉及复制和粘贴一个长字符串从一个单元格到另一个。我的代码工作得很好,直到源单元格中有太多字符。经过一些测试,我认为如果Cell E16中的字符数大于8000(大约),我的代码将生成runtime error 1004。此时,我有一个变通方法,即将源单元分配给中间单元。如果可以的话,我可以知道这个问题的原因是什么吗?如果单元格(E16)的内容真的很长,我是否需要将其拆分为1个以上?

如果E16

中字符太多,则此方法不起作用。
Sheets(SN_Pound).Range("A10") = Sheets(SN_LV).Range("E16")

此方法有效

CHR_LV_str = Sheets(SN_LV).Range("E16")
Sheets(SN_Pound).Range("A10") = CHR_LV_str

导致错误的原因似乎与使用Range对象的默认属性有关。如果显式指定了该属性,则没有错误:

With Sheets(1)
    .Range("E16").Value = String$(30000, "x")
    Debug.Print Len(.Range("E16").Value)        'Prints 30000
'    .Range("A10") = Range("E16")               'Error 1004
    .Range("A10").Value = .Range("E16").Value   'No error
    Debug.Print Len(.Range("A10").Value)        'Prints 30000
    .Range("E16").Value = String$(60000, "x")
    Debug.Print Len(.Range("E16").Value)        'Prints 32767
End With

请注意,根据@Slai在评论中提到的链接,最大单元格文本长度是32767,但它只是被截断了。如果您尝试分配更长的字符串,则不会抛出错误。

最新更新