For循环返回一个错误的元素数组

我有一个像这样的代码的命令button:

Dim array1() Dim nrow As Integer nrow = Range("C4:C241").Count ReDim array1(nrow) For i = 0 To nrow 'array1(i) = Range("C" & i + 3) array1(i) = i Next Range("AY4:AY" & nrow + 3) = array1 

注释符号'出现在您想要切换以进行一些实验的情况下。

我在Excel中运行这个macros的是一列等于0的值,这不是我期望得到的:我想在Range("AY4:AY241")打印array1

我错在哪里?

考虑使用Tranpose为您的预期输出。

 Sub dural() Dim array1() Dim nrow As Integer nrow = Range("C4:C241").Count ReDim array1(nrow) For i = 0 To nrow array1(i) = i Next Range("AY4:AY" & nrow + 3) = Application.WorksheetFunction.Transpose(array1) End Sub 

我build议使用

 ReDim array1(1 to nrow, 1 to ncol) 

接着

 Range("C4").Resize(nrow,ncol).Value = array1 

通过这种方式,您可以确保数组是Excel所喜欢的1基数,而输出范围正是您想要的大小。

我认为这里的问题是,你正在for i = 0而不是for i = 1

当我= 0,你指着第3行; 如果你真的像array1(i) = Range("C" & i) ,而不是3,你可能会得到一个错误

编辑

根据brettdj的评论,这不是一个未经testing的答案。 这是代码中的错误的头。 做一个完整的答案,就像我说的那样,从1开始循环,然后添加,就像在接受的答案

Range("AY4:AY" & nrow + 3) = Application.WorksheetFunction.Transpose(array1)