我想通过在一次调用中将数据写入非连续(列)单元格来最小化对Excel OM的调用。像这样:
Public Sub TestNoncontiguousWrite()
Dim arr(1, 3) As Integer
arr(0, 0) = 10
arr(0, 1) = 11
arr(0, 2) = 12
Range("A1,B1,E1").Value = arr
End Sub
然而,当我这样做时,我最终会得到以下结论:
我的目标是获得以下结果:
任何想法我做错了什么?
答案 0 :(得分:1)
您的阵列和目的地范围有不同的形状 一种方法是通过循环迭代它,或者你可以尝试下面:
Public Sub TestNoncontiguousWrite()
Dim arr(4) As Variant
arr(0) = 10
arr(1) = 11
arr(2) = ""
arr(3) = ""
arr(4) = 12
Range("A1:E1").Value = arr
End Sub
这样,您可以参考范围创建相同的形状和尺寸数组 但是,如果你无法覆盖C和D中的内容,则必须循环
Public Sub TestNoncontiguousWrite2()
Dim arr(0, 2) As Integer
arr(0, 0) = 10
arr(0, 1) = 11
arr(0, 2) = 12
Dim c As Range, i as long: i = 0
For Each c in Range("A1,B1,E1")
c = arr(0, i): i = i + 1
Next
End Sub
这样,您可以在目标单元格中编写数组的每个元素。 HTH。