¿Qué es la Colección Comments en VBA?
Recordemos que una colección es un grupo de objetos semejantes. Cada hoja de cálculo tiene una colección Comments, que está compuesta por todos los objetos Comment de la hoja de cálculo. Si la hoja de cálculo no tiene comentarios, esta colección está vacía.
Por ejemplo, el siguiente código se refiere al primer comentario de la Hoja1 de un libro de trabajo activo:
Worksheets("Hoja1").Comments(1)
¿Cómo identificar el texto del comentario con VBA?
La siguiente instrucción permite identificar el texto contenido en el primer comentario de la Hoja1:
MsgBox Worksheets("Hoja1").Comments(1).Text
A diferencia de la mayoría de los objetos, el objeto Comment no tiene una propiedad "Name". Por consiguiente, para referirse a un comentario específico hay que usar un número índice o usar la propiedad Comment de un objeto Range.
¿Cómo identificar la cantidad de comentarios en VBA?
La colección Comments también es un objeto que posee su propio grupo de propiedades y métodos. Por ejemplo, la siguiente expresión muestra el número total de comentarios:
MsgBox ActiveSheet.Comments.Count
En este ejemplo La colección Comments tiene una propiedad Count que guarda el número de objetos de la hoja de cálculo activa.
¿Cómo identificar la celda del comentario?
El siguiente ejemplo se puede identificar la celda en la que se encuentra el primer comentario:
MsgBox ActiveSheet.Comments(1).Parent.Address
Comments(1): devuelve el primer objeto Comment de la colección Comments.
Parent: devuelve su contenedor, que es un objeto Range (un rango).
Address: permite identificar el nombre de la celda (por ejemplo, A1, C4, etc.).
¿Cómo mostrar la lista de comentario con VBA?
Si se desea se puede mostrar la lista de comentarios con el siguiente código:
For Each lista In ActiveSheet.Comments
MsgBox lista.Text
Next lista
Para comprender el uso del for puede revisar: Bucle For en VBA
Para examinar el uso del MsgBox puede revisar: MsgBox VBA
¿Cómo usar Comment con Range?
En el objeto Range con una propiedad llamada Comment.
El siguiente comando se refiere al objeto Comment de una celda Al (se refiere al objeto):
Range("A1").Comment
Para mostrar el comentario de la celda Al, podemos usar un msgbox :
MsgBox Range("A1").Comment.Text
¿Cómo añadir un nuevo comentario en VBA?
La lista de métodos para el objeto Comment no incluye un método para añadir un nuevo comentario. La razón es que el método AddComment pertenece al Range.
El siguiente código en VBA añade un comentario (vacío) a la celda A1 de la hoja activa:
Range("A1").AddComment
El método AddComment puede recibir un argumento (parámetro) que representa el texto para el comentario. Por tanto, se puede añadir un comentario y después el texto del mismo lo siguiente:
Range("A1").AddComment "Comentario a ser añadido"