2011-07-15 64 views
1

我正在創建一個字符串,它是一個公式。也喜歡在這裏(這是一個簡單的例子)
如果:將公式粘貼文本

A1 is "Sum" 
A2 is "D3" 

然後B1是=Concatenate("=",A1,"(",A2,")")

我想VBA宏取式的結果在B1和粘貼爲C1中的公式爲

我需要C1爲公式=SUM(D3)

我認爲這涉及到PasteSpecial的和評估,但我無法弄清楚如何。

我不想使用INDIRECT函數,因爲我希望能夠使用公式和裏面的相對引用來填充更多的單元格。

回答

4
with Activesheet 
    .Range("C1").Formula = .Range("B1").Value 
End With 
+0

'與'是一條危險的道路imho。 (但它不會改變你的答案的價值,當然) – Tipx

+0

@Tipx - 謹慎詳細說明? –

+0

只是一個側面說明你們。如果你有一個插件,並嘗試在插件上創建公式,它只能在一些時間內運行。不要問我爲什麼,我不知道。最終,我不得不直接將它寫入我正在使用的工作表中。此外,另一個奇怪的是,你必須將每個公式分別寫入每個單元格,你不能有一個二維數組並且一次寫入多個單元格,不知道爲什麼,但至少煩人。 – Jon49

-1
ActiveSheet.Cells(2, 2).Value = ActiveSheet.Cells(1, 2).Value 

可以工作,其餘由我會承擔:-)

+0

這設置值,而不是公式。 –

+0

你試過了嗎?在說它不起作用之前,做你的家庭作業。 – Tipx

0

我不知道,如果要明確一個宏命令,但是這件事情看起來像一個巨大的應用一個VBA UDF。如果您創建的UDF:

Function EvalFormula(f As String) As Variant 
    EvalFormula = Application.Evaluate(f) 
End Function 

然後在C1您可以撥打:

=EvalFormula(B1) 

寫這是一個UDF是要消除這些不愉快的情況下,您忘了運行宏,現在你的表全部出了問題。