USD 至 CADollar 错误

USD 至 CADollar 错误

我正在尝试开发一个将美元转换为加元的宏。到目前为止,该宏将活动单元格的值转换为加元,同时显示初始公式(必需)。

但是,当活动单元格的公式中包含另一个单元格的名称时,我会收到错误。

例如:

  • 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 提供上述代码片段。

相关内容