我的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,但它只是被截断了。如果您尝试分配更长的字符串,则不会抛出错误。