1

Я пытаюсь разработать макрос, который конвертирует доллары США в CAD. Пока что макрос преобразует значение активной ячейки в CAD при отображении исходной формулы (обязательно).

Однако я получаю сообщение об ошибке, когда активная ячейка содержит имя другой ячейки в своей формуле.

Например:

  • Если A2 вызывается =32*4+16 при вызове функции, значение ячейки становится 149.27 и возвращает =32*4+16*USDCAD .

  • Если A2 = 32*4+E7 , вызов функции приведет к ошибке ячейки #NAME? и возвращает =32*4+'E7'*USDCAD

Как я могу преобразовать ячейку 'E7' в значение до / во время вызова функции USDCAD ?

Вот мой код:

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 ответ1

1

Измените строку:

aCell.FormulaR1C1 = CStr(aCell.Formula) & "* USDCAD"

чтобы:

aCell.Formula = aCell.Formula & "* USDCAD"

На LHS вы заинтересованы в изменении существующей формулы, не указывая формулу в формате R1C1. На RHS не конвертируйте существующую формулу в строку.

Поскольку в расчете в долларах США перед преобразованием может быть ряд терминов, вы можете извлечь выгоду из включения в скобки всей существующей формулы, а затем умножения на обменный курс, например:

aCell.Formula = "(" & aCell.Formula & ") * USDCAD"

Спасибо Rob G за приведенный фрагмент кода.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .