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