Excel VBA转置数组并声明到另一个工作表范围

时间:2015-08-03 20:06:23

标签: arrays excel vba excel-vba

我有一些Excel VBA代码,它根据输入/计算生成一个数组,然后将值输入另一张表。

我的这个版本适用于我的电子表格的一个版本,其中包含使用以下内容的所有计算:

Range(Cells(4, "T"), Cells(4 + ball, "T")).Value = Application.Transpose(lon)

但是,当我尝试在另一个工作簿上使用它时,使用以下方法将值输入到同一位置的另一个工作表上:

Sheets("Calculations").Range(Cells(4, "T"), Cells(4 + ball, "T")).Value = Application.Transpose(lon)

我收到错误消息:"运行时错误' 1004':应用程序定义的错误或对象定义的错误"。我已经看了这个,并在我的数组中做了一些debug.print值,以确保我理解值和长度,相信我的问题是我如何声明范围。但是,我似乎无法弄清楚正确的实现。

作为一种解决方法,我有一个For循环将值粘贴到单元格中,但在我看来会有更简洁的方法来执行此操作。

For n = 1 To ball
    Sheets("Calculations").Cells(4 + n, "T").Value = lon(n)
Next n

感谢您的帮助!

1 个答案:

答案 0 :(得分:3)

您的单元格对象不是完全限定的。

虽然您的范围指的是Sheets("Calculations")中的Sheets("Calculations").Range,但Cells指的是ActiveSheet

你可以做

Sheets("Calculations").Range(Sheets("Calculations").Cells(4, "T"), Sheets("Calculations").Cells(4 + ball, "T")).Value=Application.Transpose(lon)

或(注意Cells对象之前的点)

With Sheets("Calculations")
    .Range(.Cells(4, "T"), .Cells(4 + ball, "T")).Value = Application.Transpose(lon)
End With