Vba 将文本粘贴为公式

Vba 将文本粘贴为公式,vba,excel,Vba,Excel,我正在创建一个字符串,它是一个公式。就像这里(这是一个更简单的例子) 如果: 然后B1是=连接(“=”,A1,“(”,A2,”)” 我想要一个VBA宏,它接受B1中公式的结果,并将其粘贴为C1中的公式 我需要C1是公式=SUM(D3) 我认为这涉及到特殊和评估,但我不知道怎么做 我不想使用间接函数,因为我希望能够使用公式和内部的相对引用填充更多的单元格 with Activesheet .Range("C1").Formula = .Range("B1").Value End With 我

我正在创建一个字符串,它是一个公式。就像这里(这是一个更简单的例子)
如果:

然后B1是
=连接(“=”,A1,“(”,A2,”)”

我想要一个VBA宏,它接受B1中公式的结果,并将其粘贴为C1中的公式

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

我认为这涉及到特殊和评估,但我不知道怎么做

我不想使用间接函数,因为我希望能够使用公式和内部的相对引用填充更多的单元格

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

我假设,您可以从中完成其余的工作:-)

我不知道您是否明确需要一个命令宏,但这似乎是VBA UDF的一个很好的用途。如果创建自定义项,请执行以下操作:

Function EvalFormula(f As String) As Variant
    EvalFormula = Application.Evaluate(f)
End Function
然后在C1中,您可以调用:

=EvalFormula(B1)

将此作为UDF编写将消除那些不愉快的情况,即您忘记运行宏,而现在您的工作表已完全不正常。

with是一条危险的道路。(当然,这不会改变你们答案的价值)这只是你们的一个小提示。如果您有一个外接程序,并尝试在外接程序上创建公式,那么它只在某些时候起作用。别问我为什么,我不知道。最后,我不得不把它直接写在我正在处理的工作表上。另外,还有一个奇怪的现象,你必须将每个公式分别写入每个单元格,你不能拥有一个二维数组并同时将其写入多个单元格,我不知道为什么,但至少可以说很烦人。@Tim:似乎每次我使用“with”时,我都想在重新排列代码时去掉部分代码块,所以我必须重新编辑所有代码。也许我不该说“危险”。我只是更喜欢使用objets。它设置值,而不是公式。你试过了吗?在说它不起作用之前,先做你的家庭作业。
Function EvalFormula(f As String) As Variant
    EvalFormula = Application.Evaluate(f)
End Function
=EvalFormula(B1)