VBA:将值从数组传递到范围

时间:2016-07-31 22:34:03

标签: excel vba excel-vba

这应该是相当简单的。但由于某些原因,我得到的是空白单元格而不是数组中的值被传递到单元格中。

redim rFin (2,1)
rfin (1,1) = "Bla1"
rfin (2,1) = "Bla2"

oSht1 = activesheet
lRow = 10

With oSht1
    .Range(.Cells(lRow1 + 1, 6), .Cells(lRow1 + 2, 6)) = rFin
End With

编辑:还尝试使用值为0到1而不是1到2的rFin。

3 个答案:

答案 0 :(得分:3)

这对我有用:

Option Base 1

Sub Main()
    ReDim rfin(2, 1)
    rfin(1, 1) = "Bla1"
    rfin(2, 1) = "Bla2"

    Set oSht1 = ActiveSheet
    lRow = 10

    With oSht1
        .Range(.Cells(lRow + 1, 6), .Cells(lRow + 2, 6)) = rfin
    End With
End Sub

重要的是Option Base 1因为没有它,数组从0开始。或者这可以工作:

'default of Option Base 0

Sub Main()
    ReDim rfin(2, 1)
    rfin(0, 0) = "Bla1"
    rfin(1, 0) = "Bla2"

    Set oSht1 = ActiveSheet
    lRow = 10

    With oSht1
        .Range(.Cells(lRow + 1, 6), .Cells(lRow + 2, 6)) = rfin
    End With
End Sub

答案 1 :(得分:0)

我找到了一个解决方法:使用空范围使变体与范围的格式匹配,这允许我使用此格式的单个变体(因此无需更改我已设置的变体和循环)。 / p>

oSht1 = activesheet
lRow = 10

With oSht1
    rFin = .Range(.Cells(lRow1 + 1, 6), .Cells(lRow1 + 2, 6))
End With

    rfin(1, 1) = "Bla1"
    rfin(2, 1) = "Bla2"

With oSht1
    .Range(.Cells(lRow1 + 1, 6), .Cells(lRow1 + 2, 6)) = rFin
End With

不是一个优雅的解决方案,但确实有效。只需使用空的范围。

答案 2 :(得分:0)

oSht1.Cells(lRow1 + 1, 6).Resize(2) = [{"Bla1";"Bla2"}]

甚至更短

[F11:F12] = [{"Bla1";"Bla2"}]