USD para erro CADollar

1

Estou tentando desenvolver uma macro que converte USD em CAD. Até agora, a macro converte o valor da célula ativa em CAD enquanto exibe a fórmula inicial (obrigatória).

No entanto, recebo um erro quando a célula ativa contém o nome de outra célula em sua fórmula.

Por exemplo:

  • Se A2 estiver definido como =32*4+16 quando a função for chamada, o valor da célula se tornará 149.27 e retornará =32*4+16*USDCAD .

  • Se A2 = 32*4+E7 , chamar a função produzirá um erro de célula #NAME? e retornará =32*4+'E7'*USDCAD

Como posso converter a célula 'E7' em um valor antes / durante chamando a função USDCAD ?

Aqui está o meu código:

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
    
por Andrea 26.11.2015 / 19:37

1 resposta

1

Altere a linha:

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

para:

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

No LHS, você está interessado em modificar a fórmula existente, não especificando uma fórmula no formato R1C1. No RHS, não converta a fórmula existente em uma string.

Como você pode ter uma série de termos em seu cálculo de US $ antes da conversão, pode se beneficiar da inclusão da fórmula inteira entre parênteses e da multiplicação pela taxa de câmbio, assim:

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

Obrigado ao Rob G pelo snippet de código acima.

    
por 26.11.2015 / 21:18