我有一些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
感谢您的帮助!
答案 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