从单元格获取公式 – 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函数(如left
, right
, mid
, instr
等)来评估/操作它。
根据链接页面,为常量单元返回的公式本身就是常量,空白单元格返回""
。
您可以使用这些信息来决定它是否实际是公式化的。
你可以使用类似的代码
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。