从单元格中获取公式 - VBA

时间:2015-01-12 10:09:29

标签: excel vba excel-vba excel-formula

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

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

我希望在单元格(1,3)中的表格B中放置公式

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

我想只在字符串中保存公式 -

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

并手动进行我需要的调整。

所以我的问题是:

  • 如何在细胞中获得配方?当我写 "temp=worksheets("A").cells(1,3)" 时, 我从单元格中找回了值,而不是公式......

2 个答案:

答案 0 :(得分:5)

你可以使用奇怪的单位来获取(并设置)单元格中的公式(在这种情况下为A1):

Range("A1").Formula

(详见here)。

它只是作为字符串返回,因此您可以使用常规VBA字符串函数评估/操作它,例如leftrightmidinstr等等

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

您可以使用该信息来确定其实际是否公式化。

答案 1 :(得分:0)

您可以使用

之类的代码
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

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