VBA单元格复制字符限制

时间:2016-10-28 23:59:39

标签: excel vba

我的VBA代码的一部分涉及将长字符串从一个单元格复制并粘贴到另一个单元格。我的代码工作正常,直到源单元格中有太多字符。经过一些测试后,如果runtime error 1004中的字符数大于8000(大约),我认为我的代码会生成Cell E16。此时,我有一种解决方法,即将源单元分配给中间单元。如果可能的话,我可以知道这个问题的原因是什么?如果真的很长,我是否需要将我的单元格(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

1 个答案:

答案 0 :(得分:3)

导致错误的原因似乎与使用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,但它只是被截断。如果您尝试分配更长的字符串,则不会抛出错误。