Formata uma célula como moeda arbitrária, independentemente da localidade, usando o VBA
Isso está realmente me incomodando, já que parece bem ilógico a maneira como está funcionando.
Eu tenho uma macro para formatar uma célula como uma moeda usando um pouco de código para obter o símbolo monetário.
Aqui está o código envolvido:
Dim sym As String
sym = reportConstants(ISOcode)
'Just use the ISO code if there isn't a symbol available
If sym = "" Then
sym = ISOcode
End If
With range(.Offset(0, 3), .Offset(3, 3))
.NumberFormat = sym & "#,##0;(" & sym & "#,##0)"
Debug.Print sym & "#,##0;(" & sym & "#,##0)"
End With
reportConstants
é um objeto de dicionário com símbolos de moeda definidos como strings. Por exemplo.reportConstants("USD") = "$"
. Isso é definido anteriormente na macro.
Quando a macro é executada, obtém o código ISO e, em seguida, deve formatar a célula com o símbolo de moeda correspondente.
Quando eu o executo em uma instância, o código ISO é "USD" -sym
é definido como"$"
- mas ainda formata a célula com um sinal de libra (£). Quando eudebug.print
a string de célula de formato que mostra$#,##0;($#,##0)
Então, desde que eu tenha a minha sintaxe correta, use um sinal de dólar na célula. Mas usa um sinal de £. (Eu estou executando uma versão do Excel no Reino Unido, por isso, pode ser padrão para o sinal de £, mas por quê?)
Qualquer ajuda muito apreciada.