【问题标题】:Excel VBA: Writing data to cells in non-contiguous columnsExcel VBA:将数据写入非连续列中的单元格
【发布时间】:2014-08-12 11:05:08
【问题描述】:

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

但是,当我这样做时,我会得到以下结果:

而我的目标是以下结果:

任何想法我做错了什么?

【问题讨论】:

    标签: excel vba


    【解决方案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
    

    这样,您可以参考您的 Range 创建相同的形状和维度数组。
    但是,如果您无法覆盖 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。

    【讨论】:

    • 所以没有办法只写入不连续的单元格而不写入使用循环之间的单元格(这涉及原始的 OM 调用次数)?
    • @PatMustard AFAIK 是的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-19
    • 2010-12-08
    • 2018-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多