Formatee una celda como moneda arbitraria sin importar la configuración regional, usando VBA

Esto realmente me está molestando, ya que parece bastante ilógico la forma en que está funcionando.

Tengo una macro para formatear una celda como moneda usando un poco de código para obtener el símbolo de moneda.

Aquí está el código involucrado:

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 es un objeto de diccionario con símbolos de moneda definidos como cadenas. P.ej.reportConstants("USD") = "$". Esto se define anteriormente en la macro.

Cuando la macro se ejecuta, obtiene el código ISO y debe formatear la celda con el símbolo de moneda correspondiente.

Cuando lo ejecuto en una instancia, el código ISO es "USD", por lo quesym Se define como"$" - pero todavía formatea la celda con un signo de libra (£). Cuando yodebug.print la cadena de celdas de formato que muestra$#,##0;($#,##0) por lo tanto, siempre que tenga mi sintaxis correcta, debería usar un signo de dólar en la celda. Pero en su lugar usa un signo de £. (Estoy ejecutando una versión de Excel en el Reino Unido, por lo que es posible que el valor predeterminado sea el signo £, pero ¿por qué?)

Cualquier ayuda muy apreciada.

Respuestas a la pregunta(2)

Su respuesta a la pregunta