从单元格获取公式 – VBA

我正在编写一个VBA代码,在这个代码中我需要在一个表单中引用一个来自不同表单的公式:在单元格(1,3)的表单A中有一个公式

"=R[-1]C*R[-2]C" 

我想在单元格(1,3)中的表B中input公式

 "=A!R[-1]C*A!R[-2]C" 

我只想保存在string中的公式 –

 "=R[-1]C*R[-2]C" 

手动做我需要的调整。

所以我的问题是:

  • 我怎样才能在单元格中获得公式? 当我写"temp=worksheets("A").cells(1,3)"
    我从单元中得到的价值,而不是公式…

你可以在单元格中获取(并设置)公式(在这种情况下是A1 ),奇怪的是:

 Range("A1").Formula 

(详情请看这里 )。

这只是返回一个string,所以你可以用常规的VBAstring函数(如leftrightmidinstr等)来评估/操作它。

根据链接页面,为常量单元返回的公式本身就是常量,空白单元格返回""

您可以使用这些信息来决定它是否实际是公式化的。

你可以使用类似的代码

 Dim ws1 As Worksheet Set ws1 = Worksheets("A") Dim ws2 As Worksheet Set ws2 = Worksheets("B") Dim rng1 As Range Set rng1 = ws1.Range("C1") Dim rng2 As Range Set rng2 = ws2.Range("C1") Dim myf As String myf = "=R[-1]C*R[-2]C" rng1.FormulaR1C1 = myf ' The property you were asking about 

根据需要调整。 请注意使用variables来引用Range s。