Excel VBA:将数据写入非连续列中的单元格

时间:2014-08-12 02:14:28

标签: excel-vba vba excel

我想通过在一次调用中将数据写入非连续(列)单元格来最小化对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

然而,当我这样做时,我最终会得到以下结论:

actual output

我的目标是获得以下结果:

desired output

任何想法我做错了什么?

1 个答案:

答案 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。