在VBA中修改和打印数组的循环

时间:2015-07-29 18:53:26

标签: arrays vba

所以,我试图打印100个数组的修改迭代;对于第一行我想要1到100个数组,对于第二行2到100,一直到第100行只有数组(100),所有这些行都以列A开头。我可以打印第一行很好,但对于后来的那些我没有得到任何输出。

q = 1
For m = 1 To last_age
    Sheets("Sheet1").Range(Cells(q, 1), Cells(q, UBound(Data) + 1)) = Data 'Works the first pass, but not for q>1
    For p = 0 To UBound(Data) - 1
        Data(p) = Data(p + 1)
    Next p
    If UBound(Data) > 0 Then
        ReDim Data(0 To UBound(Data) - 1)
        q = q + 1
    End If
Next m

我的所有变量似乎都正确递增,但在第一个m循环后,我的数据数组不会被放入第二行。有什么想法吗?

2 个答案:

答案 0 :(得分:1)

略有不同的方法:

Sub Tester()

    Dim data(100), i, last_age, sht As Worksheet, q, m

    'fill test array
    For i = 1 To 100: data(i - 1) = i: Next

    Set sht = Sheets("Sheet1")
    last_age = 100

    q = 1
    sht.Cells(q, 1).Resize(1, UBound(data) + 1) = data

    For m = 2 To last_age

        q = q + 1
        sht.Cells(1, 1).Offset(0, m - 1).Resize( _
             1, (UBound(data) + 1) - (m - 1)).Copy _
             sht.Cells(q, 1)

    Next m


End Sub

答案 1 :(得分:0)

您要在此行中重新标注数组:

setTimeout(fnc, 0)

但您使用ReDim Data(0 To UBound(Data) - 1) 关键字,因此您的数据将被删除。尝试使用:

Preserve