2011-07-18 67 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將簡化無論如何,你的公式。