VBA阵列到范围不起作用

时间:2017-06-15 18:42:35

标签: arrays excel vba excel-vba

我有一个数组数组。 该数组大999个元素,每个子数组有9999个元素。

在代码的最后部分,我尝试将子程序164改为Range(“A1:A9999”),但它不起作用。

以下是代码的一部分:

MsgBox (UBound(Tiendas(164), 1))
ActiveSheet.Range("B1") = CStr(UBound(Tiendas(164), 1))
ActiveSheet.Range("B2") = Tiendas(164)(33)
Range("A1:A9999") = Tiendas(164)

我的MsgBox返回9999。 B1返回9999。 B2返回元素33中的值。好的。 但Range(“A1:A9999”)= Tiendas(164)是空的。

1 个答案:

答案 0 :(得分:0)

数组和范围的大小必须相同,以使粘贴工作效率(即,不通过元素和单元循环)。

这个过程提供了一种动态的方法来实现,只给出[一维或二维]数组,以及表示应该输出数据的左上角的单格range引用。 / p>

Sub Array2Range(arr, destTL As Range)
    'dumps [arr] (1D/2D) onto a sheet where [destTL] is the top-left output cell.
    destTL.Resize(UBound(arr, 1) - LBound(arr, 1) + 1, _
        UBound(arr, 2) - LBound(arr, 2) + 1) = arr
End Sub 

根据我的回答 here 了解更多说明和示例。