martes, febrero 16, 2016

Controlando el tamaño de los comentarios en la hoja de Excel

Cuando introducimos un comentario en una celda Excel le dá un tamaño predeterminado. El comentario es una forma y como tal tiene propiedades que podemos cambiar. Si hacemos visible el comentario podemos abrir el menú contextual de sus propiedades, como ya he mostrado en este post nueve años atrás

Un lector me consulta sobre cómo cambiar de una el tamaño de todos los comentarios en una celda. En su caso se debe a que cada comentario tiene un tamaño distinto, pero también puede darse el caso de querer cambiar todos los comentarios del tamaño estándar a otro.

La selección multiple de cuadros de texto la hacemos apuntando con el mouse usando la tecla Shift (Mayúsculas)



Pero no podemos hacer lo mismo con los comentarios. Por lo tanto tendremos que echar mano a las macros.

Empezamos con una macro sencilla que selecciona todos los comentarios en la hoja activa y les da un tamaño (altura y ancho) determinado

Sub cambiar_dimension_comentario_1()

    Dim shComment As Comment

    For Each shComment In ActiveSheet.Comments
        With shComment
            .Shape.Width = 108
            .Shape.Height = 82
        End With

    Next shComment

End Sub


Mis atentos lectores habrán notado que en el cuadro de propiedades (la primer imagen del post) la altura y el ancho del comentario aparecen en centímetros, mientras que en el código de la macro usamos otra unidad. El tamaño del cuadro del comentario, y de todas las formas, la expresamos en Vba en "puntos".
En una pulgada, 2.54 centímetros, hay 72 puntos. Para convertir las dimensiones de centímetros a puntos, a los efectos de usarlas en la macro, tenemos que dividir la dimension en centímetros por 2.54 y multiplicar el resultado por 72.

Así que vamos a mostrar una macro más elaborada donde el usuario ingresa las medidas deseadas en centímetros y el código las traduce a "puntos":

Sub cambiar_dimension_comentario_2()

    Dim shComment As Comment
    Dim dblShW As Double
    Dim dblShH As Double

    dblShW = InputBox("Ancho en centimetros?", "Dimensiones del Comentario")
    dblShH = InputBox("Altura en centimetros?", "Dimensiones del Comentario")

    For Each shComment In ActiveSheet.Comments
        With shComment
            .Shape.Width = dblShW * (72 / 2.54)
            .Shape.Height = dblShH * (72 / 2.54)
        End With

    Next shComment

End Sub


En esta macro usamos InputBox sin validación de los valores introducidos, así que deberemos ser cuidadosos de ingresar números reales (Actualización: una versión mejorada está disponible en este post).

Este video muestro el funcionamiento de la macro.


9 comentarios:

  1. Gran Post como siempre.

    Solo comentar que existe la función centimetersToPoints que permite transformar de cm a puntos y evita tener que "recordar" el 72 y 2.54.

    Application.CentimetersToPoints(.Shape.Width)

    ResponderBorrar
  2. Estimado Jorge: muchísimas gracias por los aportes, consulto si hay una macro que pueda autoregular todos los comentarios del libro

    ResponderBorrar
  3. Abraham, la macro en este post regula todos los comentarios en la hoja. ¿Con autoregular te refieres a darle a cada comentario un tamaño distinto, de acuerdo a su contenido?

    ResponderBorrar
  4. Si, exactamente porque tengo comentarios de distinto tamaño, muchas gracias de antemano.

    ResponderBorrar
  5. No estoy seguro. Creo que no. Lo investigaré un poco y si encuentro una solución la publicaré.

    ResponderBorrar
  6. Muchas gracias por el post, andaba tiempo buscando esta solución, estaría muy bien poder autorregular todos los comentarios de una Hoja al mismo tiempo (y de paso poder ponerlo por defecto en los nuevos comentarios :) ), gracias de nuevo.

    ResponderBorrar
  7. Excelente aporte!!! Muchas gracias!!!

    ResponderBorrar
  8. Muchas gracias. Ha funcionado a la perfección...

    ResponderBorrar

Nota: sólo los miembros de este blog pueden publicar comentarios.