我在Excel 2007中遇到了一个问题,该问题与Microsoft支持在此处描述的Excel 2003的已知问题非常相似(“当您以编程方式将较大的数组字符串设置为一个时,可能会收到“运行时错误1004”错误消息Excel 2003中的范围”)。如果运行以下宏,则会重现该问题:
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个字符时,一切正常。
这种情况看起来很奇怪,我因为限制为2007 Ecxel(在“Excel的规范和限制”提到“字,一个单元格可以包含总数”这里)为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
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句