我在 Excel 2007 中遇到了一个问题,它与 Microsoft 支持 here 描述的 Excel 2003 的已知问题非常相似。 (“当您以编程方式将大型数组字符串设置为 Excel 2003 中的范围时,您可能会收到“运行时错误 1004”错误消息”)。如果运行以下宏,问题会重现:
Sub newMacro()
Dim longStr As String
longStr = String(8204, "a")
Dim values(3)
For i = 0 To 2
values(i) = longStr
Next i
Range("A1:C1").Value = values
End Sub
将数组值分配给范围时,Excel 会给出“运行时错误 '1004'”错误消息。但是当字符串长度为 8203 个字符时,一切正常。
这种情况对我来说确实很奇怪,因为 Ecxel 2007 的“单元格可以包含的字符总数”限制(在“Excel 规范和限制”here 中提到)是 32767。
附加信息:
有没有人遇到过这个问题?有什么解决方法吗?微软对此案有何评论?
我什么也没找到。
最佳答案
微软似乎也写了一篇关于此的知识库文章:MS KB 832136 .
来自文章:
原因:
当下列条件之一为真时,可能会出现此问题:
解决方法:
Microsoft 建议不要一次将整个数组放入工作表中,而应从数组中一次填充一个工作表。他们在文章中提供了以下示例代码,作为有关如何执行此操作的建议:
Sub PopulateRangeWithArray()
Dim x
ReDim x(1 To 2, 1 To 2)
x(1, 1) = String(2000, "a"): x(1, 2) = String(5000, "b")
x(2, 1) = String(17000, "c"): x(2, 2) = String(33000, "d")
MsgBox Len(x(1, 1)) & "," & Len(x(1, 2)) _
& "," & Len(x(2, 1)) & "," & Len(x(2, 2))
Range("a1").Value = x(1, 1)
Range("b1").Value = x(1, 2)
Range("a2").Value = x(2, 1)
Range("b2").Value = x(2, 2)
End Sub
关于vba - 以编程方式(VBA,C#)将数组字符串设置为范围时,奇怪的单元格中字符数限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30661564/