A todos nos ha ocurrido alguna vez que, al trabajar con distintos libros de Excel, copiando y pegando información de celdas entre varios libros.. finalmente comprobamos que nuestros formatos de algunas celdas cambian misteriosamente.
El causante de este misterio suelen ser los Estilos de celdas.
Para acceder a la configuración, modificación, eliminación o duplicación de Estilos de celda navegaremos por la Ficha Inicio > grupo Estilo > botón Estilos de celda:
Hace ya algún tiempo escribí algo al respecto (ver aquí).
En definitiva, no lo olvidemos, un Estilo es una configuración que afecta únicamente al formato de nuestras celdas, según una propiedades determinadas que afecta al formato de:
1- número
2- alineación
3- fuente
4- bordes
5- relleno
6- protección
es decir, las propiedades habituales que podemos definir en un formato de celda.
¿Qué ocurre en ocasiones cuando trabajamos con estilos personalizados?, pues que al copiar y pegar contenidos de celdas o rangos entre libros, trasladamos esos estilos personalizados/modificados entre dichos libros; y en consecuencia podemos afectar a nuestros formatos sin desearlo, heredando estos estilos...
Veamos la siguiente imagen, resultado obtenido tras copiar y pegar celdas de otros libros con estilos personalizados sobre un libro SIN estilos personalizados (únicamente los estilos por defecto):
Para evitar interferencias indeseables sobre nuestro libro de trabajo, lo recomendable sería eliminar cada estilo de celda personalizado.. basta hacer clic derecho y presionar Eliminar...
Si bien, cuando existen muchos estilos personalizados, el trabajo puede resultar tedioso. Para estos casos mejor emplear esta sencilla macro de Excel insertado en un módulo estándar de nuestro proyecto VB:
Otro sencillo procedimiento en VBA para Excel, esta vez una Function que puede sernos útil es:
Otra posibilidad, quizá recomendable, antes de eliminar los estilos de celda, sería aplicar el siguiente procedimiento para localizar las celdas con un estilo concreto buscado:
Por ejemplo lanzando el proceso sobre nuestro libro:
Vemos como he asignado a las celdas B3, D3 y F3 el mismo estilo de celda: Bueno.
Si ahora lanzamos la macro LocalizaEstiloCelda con la celda B3 seleccionada, tendríamos para cada celda coincidente del Libro de Excel:
Acabará el procedimiento con el último mensaje:
Para este último procedimiento se podría sustituir el segundo loop (for each.. next) por el método .Find para agilizar la búsqueda...
El causante de este misterio suelen ser los Estilos de celdas.
Para acceder a la configuración, modificación, eliminación o duplicación de Estilos de celda navegaremos por la Ficha Inicio > grupo Estilo > botón Estilos de celda:
Hace ya algún tiempo escribí algo al respecto (ver aquí).
En definitiva, no lo olvidemos, un Estilo es una configuración que afecta únicamente al formato de nuestras celdas, según una propiedades determinadas que afecta al formato de:
1- número
2- alineación
3- fuente
4- bordes
5- relleno
6- protección
es decir, las propiedades habituales que podemos definir en un formato de celda.
¿Qué ocurre en ocasiones cuando trabajamos con estilos personalizados?, pues que al copiar y pegar contenidos de celdas o rangos entre libros, trasladamos esos estilos personalizados/modificados entre dichos libros; y en consecuencia podemos afectar a nuestros formatos sin desearlo, heredando estos estilos...
Veamos la siguiente imagen, resultado obtenido tras copiar y pegar celdas de otros libros con estilos personalizados sobre un libro SIN estilos personalizados (únicamente los estilos por defecto):
Para evitar interferencias indeseables sobre nuestro libro de trabajo, lo recomendable sería eliminar cada estilo de celda personalizado.. basta hacer clic derecho y presionar Eliminar...
Si bien, cuando existen muchos estilos personalizados, el trabajo puede resultar tedioso. Para estos casos mejor emplear esta sencilla macro de Excel insertado en un módulo estándar de nuestro proyecto VB:
Sub Elimina_Todos_Estilos_Personalizados() Dim estilo As Style 'recorremos los estilos de este libro de trabajo For Each estilo In ThisWorkbook.Styles 'evaluamos si el estilo no corresponde a alguno por defecto de la aplicación 'en cuyo caso (es estilo personalizado) y lo eliminamos If Not estilo.BuiltIn Then estilo.Delete Next estilo End Sub
Otro sencillo procedimiento en VBA para Excel, esta vez una Function que puede sernos útil es:
Function EstiloDeCelda(celda As Range) As String 'la propiedad .Style nos indica el nombre del estilo de celda EstiloDeCelda = celda.Style End Function
Otra posibilidad, quizá recomendable, antes de eliminar los estilos de celda, sería aplicar el siguiente procedimiento para localizar las celdas con un estilo concreto buscado:
Sub LocalizaEstiloCelda() Dim rRange As Range, celda As Range Dim comparada As Range Dim contador As Long 'buscamos estilos coincidente con el de la celda seleccionada (solo una) Set comparada = Selection 'en caso de selccionar más de una celda, salimos del procedimiento If comparada.Count > 1 Then Exit Sub contador = 0 'recorremos todas las hojas del libro For Each sh In Worksheets 'definimos el rango de celdas usadas en cada hoja Set rRange = sh.UsedRange 'y las recorremos For Each celda In rRange 'comparando su estilo con el de la celda seleccionada If celda.Style = comparada.Style Then 'en caso de coincidencia incrementamos el contador contador = contador + 1 'y mostramos la dirección completa MsgBox celda.Address(external:=True) End If Next celda Next sh 'Acabamos mostrando un mensaje que nos dice el númer de celdas con ese estilo MsgBox "Número de celdas con estilo coincidente en el libro:= " & contador End Sub
Por ejemplo lanzando el proceso sobre nuestro libro:
Vemos como he asignado a las celdas B3, D3 y F3 el mismo estilo de celda: Bueno.
Si ahora lanzamos la macro LocalizaEstiloCelda con la celda B3 seleccionada, tendríamos para cada celda coincidente del Libro de Excel:
Acabará el procedimiento con el último mensaje:
Para este último procedimiento se podría sustituir el segundo loop (for each.. next) por el método .Find para agilizar la búsqueda...
No hay comentarios:
Publicar un comentario
Nota: solo los miembros de este blog pueden publicar comentarios.