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

Arrays 在VBA中修改和打印数组的循环,arrays,vba,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 no

所以,我试图打印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循环之后,我的数据数组没有放在第二行。有什么想法吗

方法略有不同:

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

您正在此行中重新确定阵列的尺寸:

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

ReDim Preserve Data(0 To UBound(Data) - 1)

谢谢正如Chipsleten所说,我缺少了
Preserve
关键字。Tim's非常适合打印1到100的数字;我应该更清楚地说明我使用的是100个值的数组。