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)