miércoles, 8 de abril de 2015

VBA: Modificar dimensiones de todos los comentarios.

UN lector, a través de un comentario planteaba la manera de solventar un problema con el que, en ocasiones, nos encontramos: Modificar las dimensiones (alto y ancho) de los bocadillos de los comentarios:
...por alguna razón todos los comentarios perdieron el ancho predeterminado y se ven como una linea, he tenido que seleccionar uno por uno y ajustarle el ancho nuevamente. hay manera de seleccionar todos los comentarios del libro y cambiarle las propiedades al mismo tiempo?...


Es un problema tedioso que suele ocurrir (no siempre) cuando trabajamos con paneles inmovilizados...

la solución pasaría por lanzar un procedimiento que recorra todos los comentarios de nuestra hoja y vaya asignándole a cada uno unas dimensiones definidas por nosotros..
Supongamos nos encontramos con el siguiente panorama.. y hemos descartado ir comentario por comentario de manera manual:

VBA: Modificar dimensiones de todos los comentarios.



Añadimos el procedimiento Sub ModificarDimensionesComentarios en un módulo de nuestro proyecto de VBA:

Sub ModificarDimensionesComentarios()
'Definir la hoja donde se colocarán los comentarios
Dim hojaComentarios As Worksheet, rng As Range
Set hojaComentarios = ActiveWorkbook.ActiveSheet
Set rng = Selection.SpecialCells(xlCellTypeComments)
 
'Extraer los comentarios si se ha seleccionado un rango
If TypeName(rng) = "Range" Then
'Establecer el rango a inspeccionar delimitando celdas con comentarios
Set rango = Intersect(rng, ActiveSheet.UsedRange)
'Recorrer todas las celdas del rango
For Each celda In rango.Cells
    'Obtener el comentario de la celda
    On Error Resume Next
    comentario = celda.Comment.Text
    
    'Si la celda tiene un comentario
    'modificamos su Ancho y Alto
    If Len(comentario) > 0 Then
        celda.Comment.Shape.Width = 80
        celda.Comment.Shape.Height = 40
    End If
    
    comentario = ""
    On Error GoTo 0
Next celda
End If
 
End Sub



Tras ejecutar el proceso este sería el resultado:

VBA: Modificar dimensiones de todos los comentarios.



Otra forma igual de válida...

Sub DimensionarComentarios()
Dim xWs As Worksheet
Dim xComment As Comment
'recorremos las hojas del libro
For Each xWs In Application.ActiveWorkbook.Worksheets
    'y dentro de cada hoja todos los comentarios
    For Each xComment In xWs.Comments
        ' a cada comentario le cambiamos Ancho y Alto
        With xComment.Shape
            .Width = 80
            .Height = 40
        End With
    Next
Next
End Sub

2 comentarios:

  1. He intentado las dos opciones en Excel 2016 y sigue igual. No han cambiado de tamaño. Siguen como una línea

    ResponderEliminar
    Respuestas
    1. Hola, qué tal estás?
      Un placer saludarte igualmente.

      Revisa lo que tengas por que acabo de verificar el código en Excel 2016 y funciona...

      Algo tienes distinto

      Saludos cordiales

      Eliminar

Nota: solo los miembros de este blog pueden publicar comentarios.