2011-07-18 48 views
1

我试图用引用当前工作表和另一个工作表的基本公式填充单元格。在VBA中生成的公式之间引用具有公式的工作表

我试图输入到细胞中的公式为基本上... ='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中输出时,它会打印出我想要的内容,但它不是公式。

回答

4
  1. 您的)太多,以.formula开头。
  2. 你的表后缺少!

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

你不应该来构建的任何范围自己的地址 - 您只需将这样做会把自己暴露给潜在的问题。

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

取而代之,您可以在致电Address()时指定External:=True,它将为您提供一个包含工作表名称的地址。我会做这样的事情:

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将简化无论如何,你的公式。