我有一个命令按钮,代码如下:
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中运行此宏的是一列等于0
的值,这不是我期望得到的:我想在array1
中打印Range("AY4:AY241")
}。
我哪里错了?
答案 0 :(得分:5)
考虑将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
答案 1 :(得分:1)
我建议使用
ReDim array1(1 to nrow, 1 to ncol)
然后
Range("C4").Resize(nrow,ncol).Value = array1
这样你可以确保数组是1-base,这是Excel喜欢的,输出范围正是你想要的大小。
答案 2 :(得分:0)
我认为这里的问题是你正在做for i = 0
而不是for i = 1
当i = 0时,你指的是第3行;如果你确实喜欢array1(i) = Range("C" & i)
,而不是添加3,那么你可能会收到错误
修改强>
根据brettdj的评论,这不是一个未经测试的答案。这是代码中的错误。要做一个完整的答案,就像我说的那样,从1开始循环,然后添加,如在接受的答案中那样
Range("AY4:AY" & nrow + 3) = Application.WorksheetFunction.Transpose(array1)