使用在VBA中生成的公式在工作表之间进行引用

时间:2011-07-18 06:36:13

标签: excel vba excel-vba excel-formula

我正在尝试使用引用当前工作表和另一个工作表的基本公式填充单元格。

我尝试输入单元格的公式基本上是...... ='Sheet2'A(j) / B(i),其代码如下:

For i = 1 To 5
    For j = 1 To 5
        With shOut.Cells(i,j)
            .formula = "='Sheet2'" & Cells(j,1)).Address & "/" & Cells(i,2).Address
        End With
    Next j
Next i

我遇到问题的部分是开始时的工作表参考;当我在.formula中运行时,会触发错误。

但是,当我删除'='符号并将其输出到.Value时,它会打印出我想要的内容,除非它不是公式。

2 个答案:

答案 0 :(得分:4)

  1. 您的行中)太多,以.formula开头。
  2. 您在工作表后缺少!

    .formula = "=Sheet2!" & Cells(j,1).Address & "/" & Cells(i,2).Address
    

答案 1 :(得分:4)

你不应该自己构建任何范围的地址 - 这样做只会让你自己容易受到潜在问题的影响。

例如,在cularis'(非常好)答案中,工作表名称周围没有单引号。在这种情况下,它们不是必需的,但如果工作表名称中有空格,那么 需要引号。 (我的观点是你不应该知道 - 并且自己也能满足所有这些要求。)

相反,您可以在External:=True的调用中指定Address(),这将为您提供包含工作表名称的地址。我会做这样的事情:

Dim oWorksheet1 As Worksheet
Dim oWorksheet2 As Worksheet

...

.Formula = "=" & oWorksheet1.Cells(j,1).Address(External:=True) & "/" & oWorksheet2.Cells(i,2).Address(External:=True)

请注意,在您的情况下,您可能只需要为其中一个工作表使用External参数,但这样做会使额外的时间不会受到影响,因为Excel无论如何都会为您简化公式。