2011-07-15 152 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是要消除这些不愉快的情况下,您忘了运行宏,现在你的表全部出了问题。