使用VBA将公式插入单元格:对象定义的错误

时间:2016-06-16 09:50:32

标签: excel vba excel-vba

我试图在我的VBA代码中使用它:

  ActiveSheet.Range("A1:A1:).Formula = "='Sheet1'!A1" & Chr(34) & Chr(47) & Chr(34) & "'Sheet1'!A2"

这给了我错误:1004,对象定义的错误。

我希望在细胞公式中看到:

  

='工作表Sheet'!A1" /"'工作表Sheet'!A2

如果A1单元格的值为10且A2值为20,则单元格值应如下所示: 10/20

可能是什么问题?

2 个答案:

答案 0 :(得分:1)

我假设您希望公式为:

='Sheet1'!A1&"/"&'Sheet1'!A2(所以:A1和A2的文字串联,中间有“/”)

='Sheet1'!A1/'Sheet1'!A2(所以:将A1除以A2的结果)

检查公式的结果:它既不会生成:)(导致公式无效)而且,正如Jordan回答的那样,你的VBA使用了冒号而不是双引号。

更新(请仔细阅读您在问题中要求进行文字连接,并添加解决方案的事实)

最好在使用调试器(F8)逐步调试VBA时检查公式构建的结果:它会生成一个无效的公式,当您尝试设置它时Excel无疑会给您一个错误。结果不包含任何&个字符来连接A1和&的值。 A2与“/”之间。

正确的公式应该是:

='Sheet1'!A1&"/"&'Sheet1'!A2

这是通过以下方式实现的:

ActiveSheet.Range("A1").Formula = "='Sheet1'!A1&""/""&'Sheet1'!A2"

(请注意,您可以通过加倍在一个VBA字符串中嵌入“;在这种情况下,读取比使用Chr(34)更清晰”

答案 1 :(得分:0)

首先,Range中有一个冒号而不是一个语音标记。你可以尝试类似的东西:

ActiveSheet.Range("A1").Value = Sheet("Sheet1").Range("A1").Value & "/" & Sheet("Sheet1").Range("A2").Value

我还建议尽可能不使用ActiveSheet,并参考参考资料中的工作簿。如果要引用包含VBA代码的工作簿,可以使用ThisWorkbook