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

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

我有这个工作,我的电子表格的一个版本,其中包含所有的计算在一张使用:

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

但是,当我尝试在另一个工作簿上使用这个工作簿时,该工作簿使用以下命令将值input到同一位置的另一张工作表中:

 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 

谢谢你的帮助!

您的单元格对象不完全合格。

虽然您的范围指的是Sheets("Calculations")中的Sheets("Calculations").RangeCells指的是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