Vamos a repasar unas propiedades de la aplicación, de Excel, que nos pueden ser útiles en diferentes ocasiones.
Por ejemplo, cuando trabajamos con nuestras macros en entornos internacionales y nuestros compañeros de trabajo emplean una configuración decimal-miles de sistema distinto al nuestro.
Veremos en concreto, y entre otras, las propiedades:
Application.UseSystemSeparators
Application.DecimalSeparator
Application.ThousandsSeparator
La propiedad Application.UseSystemSeparators activa o desactiva el uso de los separadores del sistema.
Mientras que los otros dos:
Application.DecimalSeparator
Application.ThousandsSeparator
permiten personalizar los caracteres a emplear tanto para el separador de miles como para el decimal...
Otra propiedad interesante es la que nos permite cambiar el estio de referencia de celdas entre A1 y F1C1, la propiedad en cuestión es:
Application.ReferenceStyle
En un módulo estándar de nuestro explorador de proyecto VBA insertamos el siguiente código:
En mi caso parto de una configuración con:
Separador de miles un punto .
Separador decimal una coma ,
Vemos en dos imágenes el cambio producido al ejecutar nuestra macro:
Y en un otro paso:
Por ejemplo, cuando trabajamos con nuestras macros en entornos internacionales y nuestros compañeros de trabajo emplean una configuración decimal-miles de sistema distinto al nuestro.
Veremos en concreto, y entre otras, las propiedades:
Application.UseSystemSeparators
Application.DecimalSeparator
Application.ThousandsSeparator
La propiedad Application.UseSystemSeparators activa o desactiva el uso de los separadores del sistema.
Mientras que los otros dos:
Application.DecimalSeparator
Application.ThousandsSeparator
permiten personalizar los caracteres a emplear tanto para el separador de miles como para el decimal...
Otra propiedad interesante es la que nos permite cambiar el estio de referencia de celdas entre A1 y F1C1, la propiedad en cuestión es:
Application.ReferenceStyle
En un módulo estándar de nuestro explorador de proyecto VBA insertamos el siguiente código:
Sub SeparadoresDelSistema() 'vemos en un mesnaje el estilo de referencia en este momento Dim strEstilo As String If Application.ReferenceStyle = xlA1 Then MsgBox "El estilo de referencia actual es A1" Else MsgBox "El estilo de referencia actual es F1C1" End If 'cambio de estilo de referencia a F1C1 Application.ReferenceStyle = xlR1C1 'componemos texto informativo con los separadores actuales de nuestro equipo Dim strDecimal As String, strMiles As String strDecimal = Application.International(xlDecimalSeparator) strMiles = Application.International(xlThousandsSeparator) MsgBox "Antes del cambio " & vbCrLf & _ "El separador decimal actual es: " & strDecimal & vbCrLf & _ "El separdor de miles actual es: " & strMiles 'Cambiamos los separadores del sistema With Application 'deshabilitamos los separadores .UseSystemSeparators = False 'marcamos cuálkes son los separadores deseados .DecimalSeparator = "." .ThousandsSeparator = "," End With 'componemos texto informativo con los separadores actuales 'tras el cambio en nuestro equipo strDecimal = Application.International(xlDecimalSeparator) strMiles = Application.International(xlThousandsSeparator) MsgBox "Después del cambio " & vbCrLf & _ "El separador decimal actual es: " & strDecimal & vbCrLf & _ "El separdor de miles actual es: " & strMiles & vbCrLf & _ "El estilo de referencia es: F1C1" 'para activar de nuevo los separadores del Sistema Application.UseSystemSeparators = True 'retornamos al estilo de referencia a A1 Application.ReferenceStyle = xlA1 End Sub
En mi caso parto de una configuración con:
Separador de miles un punto .
Separador decimal una coma ,
Vemos en dos imágenes el cambio producido al ejecutar nuestra macro:
Y en un otro paso:
Hola Ismael,
ResponderEliminarPaso a saludarte y felicitarte por el trabajo que realizar.
Quisiera saber en este caso, porque en los dos mensajes msgbox que haz lanzado, el separador decimal es "," y el separador de miles es "," ; No debería cambiar esto al ejecutar el procedimiento sub tanto en el mensaje como en la celda (6,3). Saludos desde Perú.
Perdón quise decir :
ResponderEliminarSeparador decimal es "," y el separador de miles es "." .
y en la celda (3,6)
Gracias!
Eliminarse me coló otra imagen de prueba
Saludos
Hola! Existiría lo mismo para el formato de la fecha?? Gracias a este post he descubierto que tenia un problema en el codigo al pasarselo a otros usuarios de mi excel, que era por culpa de los separadores decimales, pero ahora tengo otro que es del formato de la fecha, ya que yo uso "dd-MMM-yy" y ellos "dd/mm/yy". Hay alguna forma para que el excel use siempre "dd/mm/yy"?
ResponderEliminarHola!
Eliminaren realidad la configuración de las fechas es solo un tema de formato que se ajusta desde la configuración regional de tu sistema operativo (supongo Windows)...
Si quieres tratar las fechas en 'igualdad de condiciones' puedes emplear CDate(celda_fecha), o incluso Clng(celda_fecha)
Un saludo