En entradas anteriores (Nov.2018 y Abr.2019) vimos diferentes modelos de Comentarios. Cómo formatearlos (formas, colores e imágenes) y además cómo programar en VBA el agregado o modificación de estos objetos.
Estos temas fueron mostrados en mi canal Soluciones Excel, en los siguientes videos:
Nº 17: Agregar COMENTARIOS en hoja Excel (no apto para versiones Excel 365)
Nº 24: Comentarios en Excel mediante programación VBA (no apto para versiones Excel 365)
Ahora, con la llegada de la versión Excel 365, los antiguos 'comentarios' pasaron a llamarse 'Notas'. Estos objetos Notas todavía conservan la posibilidad de cambios en sus formatos (colores, formas e imagen). Y en VBA siguen llamándose Comment.
Los nuevos Comentarios en cambio, no permiten el cambio de formato. Pero sí permiten el agregado de respuestas en dicho cuadro.
En esta nueva versión 365, al seleccionar una celda con comentario, se abrirá un panel lateral a la derecha mostrando el texto original y la posibilidad de agregar una respuesta que se publicará al presionar el botón verde. Y así se irán viendo los autores, fecha y texto de las diferentes respuestas.
Y en VBA, el término 'Comment' pasa ahora a llamarse CommentThreaded.
Veamos un ejemplo de cómo agregar comentarios y respuestas en VBA, ya sea en las versiones clásicas de Excel y en versión 365:
A continuación evaluaremos el cambio en las celdas de dos columnas.
Si se trata de la columna C agregaremos una NOTA. Si la celda ya presenta una NOTA se sobrescribirá. Y si se borra la celda, también se borrará la NOTA.
En cambio si se trata de la columna I agregaremos COMENTARIOS. Si se borra la celda, se mostrará el cambio como un nuevo comentario.
Private Sub Worksheet_Change(ByVal Target As Range)
'no se evalúan los cambios en fila 1 ni tampoco si se han seleccionado varias celdas
If Target.Count > 1 Or Target.Row = 1 Then Exit Sub
'si el cambio se da en col 3 (C) se deja solo una NOTA
If Target.Column = 3 Then
Target.ClearComments 'otra opción: evaluar si hay una nota o no.
Target.AddComment "Compartir este evento con Jose Luis."
'si el cambio se da en col I de la tabla de costos se agrega como Comentarios el nombre del usuario y el importe ingresado.
ElseIf Target.Column = 9 Then
'evaluar si la celda no tiene aún comentario, o sea es el primero a registrar
If Target.CommentThreaded Is Nothing Then
Target.AddCommentThreaded Application.UserName & "_" & Target.Value
Else
'si ya tiene algún comentario se agrega una 'respuesta'
Target.CommentThreaded.AddReply Application.UserName & "_" & Target.Value
End If
End If
End Sub