我正在尝试开发一个将美元转换为加元的宏。到目前为止,该宏将活动单元格的值转换为加元,同时显示初始公式(必需)。
但是,当活动单元格的公式中包含另一个单元格的名称时,我会收到错误。
例如:
若
A2
设置为,=32*4+16
当调用该函数时,单元格值变为149.27
,并返回=32*4+16*USDCAD
。如果
A2
=32*4+E7
,调用该函数将产生单元格错误#NAME?
并返回=32*4+'E7'*USDCAD
如何在调用该USDCAD
函数之前/调用时将“E7”单元格转换为值?
这是我的代码:
Sub ConvertToCAD()
Dim LValue As String
Dim aCell As Range
Dim xRate As Double
Range("USDCAD") = FXRate("USD", "CAD", "close")
For Each aCell In Selection
aCell.FormulaR1C1 = CStr(aCell.Formula) & "* USDCAD"
Next aCell
End Sub
答案1
更改此行:
aCell.FormulaR1C1 = CStr(aCell.Formula) & "* USDCAD"
到:
aCell.Formula = aCell.Formula & "* USDCAD"
在 LHS 上,您感兴趣的是修改现有公式,而不是指定 R1C1 格式的公式。在 RHS 上,不要将现有公式转换为字符串。
由于在转换之前,您的美元计算中可能有一系列项,因此您可以将整个现有公式放在括号中,然后乘以汇率,如下所示:
aCell.Formula = "(" & aCell.Formula & ") * USDCAD"
感谢 Rob G 提供上述代码片段。