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.

questionAnswers(2)

yourAnswerToTheQuestion