¿Cómo cambiar automáticamente la coma de los decimales por el punto?

Hola.

Mi problema, aunque parezca una tontería, es el siguiente: Tengo un inventario de productos con sus correspondientes precios en una hoja de cálculo, y en otra (dentro del mismo libro) tengo otra donde sólo tengo algunos de los datos anteriores. Mi problema es que tengo que enviar esta segunda hoja a una plataforma para que me la validen automáticamente, pero no aceptan la separación de decimales con "coma", sino sólo con "punto".

Por tanto mi pregunta es: ¿Hay algún medio para conseguir tener sincronizada esta segunda hoja con la primera, pero manteniendo en una la separación con comas y en la otra con puntos?

Nota: En la segunda he desactivado "Usar separadores del sistema" en opciones avanzadas.

Muchas gracias.

1 Respuesta

Respuesta
1

En una copia del libro (para no liarla si algo sale mal), pulsa con el botón izquierdo sobre la etiqueta de la hoja en la que quieres que aparezca como separador decimal el punto, selecciona 'Ver código' y pega lo siguiente :

Private Sub Worksheet_Activate()
    With Application
        .DecimalSeparator = "."
        .ThousandsSeparator = ","
        .UseSystemSeparators = False
    End With
End Sub
Private Sub Worksheet_Deactivate()
    Application.UseSystemSeparators = True
End Sub

Una vez hecho esto, cada vez que se active esa hoja el separador decimal será el punto y el de miles la coma, pero al cambiar de hoja los separadores serán de nuevo los establecidos en la configuración regional del sistema.

El problema es que si se cambia de libro, se cierra, o se crea uno nuevo mientras está activa esa hoja, los separadores por defecto serán los suyos y no los del sistema. Para solucionarlo, habría que pegar lo siguiente en el módulo del libro (el que aparece como "ThisWorkbook" en la ventana del proyecto, a la izquierda):

Private Sub Workbook_Activate()
    If ActiveSheet.Name = "Hoja2" Then '<<<<< en esta línea hay que cambiar Hoja2 por el nombre de la hoja
        With Application
            .DecimalSeparator = "."
            .ThousandsSeparator = ","
            .UseSystemSeparators = False
        End With
    End If
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Application.UseSystemSeparators = True
End Sub
Private Sub Workbook_Deactivate()
    Application.UseSystemSeparators = True
End Sub

Gracias por la ayuda. Funcionó perfectamente, con un PERO: Sigo tus instrucciones al pie de la letra, guardo el archivo, lo cierro, y cuando quiero volver a usarlo... ya no funciona. Los códigos siguen ahí, pero como si no estuviesen, vuelve a utilizar la coma como separador decimal en todas las hojas.

Lo único que he hecho ha sido cambiar el archivo *xlsm de carpeta.

Supuse que tal vez al haber cerrado el archivo con la hoja2 activa debería simplemente cambiar a otra nada más abrirlo y luego volver a la Hoja2 para ver los cambios, pero tampoco.

¿Autorizaste la ejecución de código en el nuevo libro? Es la única explicación que se me ocurre de momento.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas