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.