Código VBA para insertar, eliminar y controlar comentarios.
- Adaptando el código a tus necesidades
- Acciones básicas de comentarios
- Recorriendo los comentarios
- Celdas con comentarios
- Cambiar la configuración de visualización de comentarios
- Mostrar e imprimir comentarios en una página separada
- Cambiar la forma de todos los cuadros de comentarios en una hoja de trabajo
A algunos usuarios de Excel les encantan los comentarios; Ponen comentarios en todos sus libros de trabajo. Otros usuarios los desprecian porque son antiestéticos y molestos. Cualquiera que sea tu preferencia, puedes controlarlos con VBA; agregar, eliminar, enumerar en una hoja de trabajo: todo se puede hacer con VBA.
Adaptando el código a tus necesidades
Es poco probable que el código siguiente cumpla con sus requisitos exactos. Cada fragmento de código utiliza variables para contener la hoja de trabajo, el comentario del libro, la celda o un valor de configuración. Al cambiar esas variables, el código se puede cambiar y combinar fácilmente con otros fragmentos de código para cumplir con sus requisitos específicos.
Acciones básicas de comentarios
Este primer grupo de macros presenta algunas de las acciones básicas que puede incluir como parte de un procedimiento más largo.
Probar si una celda tiene un comentario
El siguiente código comprobará si la celda activa tiene un comentario. Si es así, generará un cuadro de mensaje para indicar que existe un comentario.
Sub TestCellForComment()'Crear variablesDim c como RangeDim commentText As String'Establecer variablesEstablecer c = ActiveCell'Intenta establecer la variable. Si el error entonces el comentario no existeEn caso de error Reanudar NextcommentText = c.comment.TextEn error Ir a 0'Si el comentario existe entonces muestra el cuadro de mensajeSi comentarioText "" Luego MsgBox "La celda contiene un comentario"End IfEnd Sub
Agregar un comentario a una celda
El siguiente código insertará el texto "Insertar mi comentario" como comentario adjunto a la celda activa.
Sub AddComment()'Crear variablesDim c As RangeDim commentText As String'Establecer variablescommentText = "Insertar mi comentario"Establecer c = ActiveCell'Agregar comentarioc.AddComment'Cambiar el comentarioc.comment.Text Texto:=commentTextEnd Sub
Obtener el texto de un comentario
El siguiente código capturará el texto de un comentario y lo mostrará dentro de un cuadro de mensaje.
Sub DisplayCommentFromCell()'Crear variablesDim c como RangeDim commentText As String'Establecer variablesEstablecer c = ActiveCell'Intenta establecer la variable. Si el error entonces el comentario no existe. En caso de error Reanudar NextcommentText = c.comment.TextOn Error GoTo 0'Si el comentario existe entonces muestra commentIf commentText "" Luego MsgBox commentTextEnd IfEnd Sub
Borrar comentarios de una hoja de trabajo
La siguiente macro borrará los comentarios existentes de la hoja de trabajo.
Sub ClearCommentsWorksheet()'Crea variablesDim ws como hoja de trabajo'Establecer variablesEstablecer ws = ActiveSheet'Borrar comentarios de la hoja de trabajows.Cells.ClearCommentsEnd Sub
Borrar comentarios de un rango
La siguiente macro borrará los comentarios de un conjunto específico de celdas (A1-B20 de la hoja activa) en este ejemplo.
Sub DeleteCommentsFromRange()'Crea variablesDim ws As WorksheetDim rng As Range'Establecer variablesSet ws = ActiveSheetSet rng = ws.Range("A1:B20")'Borrar comentarios de worksheetrng.ClearCommentsEnd Sub
Recorriendo los comentarios
Algunas acciones se pueden aplicar a todos los comentarios al mismo tiempo (como borrarlos). Sin embargo, otras acciones deben aplicarse individualmente recorriendo cada uno de los comentarios uno por uno.
Recorrer todos los comentarios en la hoja de trabajo.
El siguiente código VBA recorrerá todos los comentarios en la hoja de trabajo activa.
Sub LoopThroughCommentsInWorksheets()'Crear variablesDim ws como WorksheetDim com como comentario'Establecer variablesSet ws = ActiveSheet'Recorrer cada comentario en la hoja de trabajoPara cada com en ws.Comments 'Hacer algo con cada comentario' Usar com. para hacer referencia a cada comentarioNext comEnd Sub
Recorrer todos los comentarios del libro de trabajo.
Lo siguiente amplía el código anterior y recorre todos los comentarios en el libro de trabajo activo.
Sub LoopThroughCommentsInWorkbook()'Crear variablesDim wb como libro de trabajoDim ws como hoja de trabajoDim com como comentario'Establecer variablesEstablecer wb = ActiveWorkbook'Recorrer cada hoja de trabajo para cada ws en wb.Worksheets 'Recorrer cada comentario en la hoja de trabajo para cada com en ws.Comments 'Hacer algo a cada comentario 'Utilice com. para hacer referencia a cada comentario Next comNext wsEnd Sub
Celdas con comentarios
Al pensar en comentarios, también debemos considerar la celda a la que se adjunta el comentario. Los siguientes ejemplos se relacionan específicamente con esos tipos de células.
Seleccionar todas las celdas con comentarios.
Excel proporciona un método para seleccionar todas las celdas con comentarios, que se utiliza en la siguiente macro.
Sub SelectCellsWithComments()'Crear variablesDim ws As Worksheet'Establecer variablesSet ws = ActiveSheet'Seleccione las celdas con comentariosws.Cells.SpecialCells(xlCellTypeComments).SelectEnd Sub
Recorra todas las celdas con comentarios en la hoja de trabajo
Cuando los métodos deben aplicarse a cada celda individualmente, es necesario recorrerlos uno por uno. El siguiente código recorrerá cada celda de la hoja de trabajo activa que contenga un comentario.
Sub LoopThroughAllCellsWithCommentsWorksheet()'Crear variablesDim ws As WorksheetDim c As Range'Establecer variablesSet ws = ActiveSheet'Recorrer cada comentario en la hoja de trabajoPara cada c En ws.Cells.SpecialCells(xlCellTypeComments) 'Hacer algo en cada celda 'Usar c para hacer referencia a cada celdaSiguiente cFin Sub
Recorra todas las celdas con comentarios en el libro de trabajo.
Lo siguiente amplía el código anterior y recorre todas las celdas del libro que tienen comentarios adjuntos.
Sub LoopThroughAllCellsWithCommentsWorkbook()'Crear variablesDim wb como libro de trabajoDim ws como hoja de trabajoDim c como rango'Establecer variablesEstablecer wb = ActiveWorkbook'Recorrer cada hoja de trabajo para cada ws en wb.Worksheets 'Recorrer cada comentario en la hoja de trabajo para cada c en ws.Cells.SpecialCells( xlCellTypeComments) 'Hacer algo en cada celda 'Usar c para hacer referencia a cada celda Siguiente cSiguiente wsEnd Sub
Cambiar la configuración de visualización de comentarios
La configuración de visualización de comentarios se puede cambiar a una de tres opciones:
- El comentario esta oculto.
- El comentario está oculto pero el indicador (es decir, el triángulo rojo) está visible
- El comentario y el indicador son visibles.
La siguiente macro ocultará el comentario y el indicador.
Sub ChangeCommentDisplay()'Crear variablesDim IndicatorType As Long'Establecer variablesindicatorType = xlNoIndicator'Aplicar comentario IndicatorApplication.DisplayCommentIndicator = IndicatorTypeEnd Sub
Para aplicar las otras configuraciones, cambie esta línea de código:
tipo de indicador = xlNoIndicador
Para una de estas líneas de código:
Mostrar indicador de comentario:
tipo de indicador = xlCommentIndicatorOnly
Mostrar indicador de comentario y comentario:
tipo de indicador = xlCommentAndIndicator
Mostrar e imprimir comentarios en una página separada
Si prefiere que los comentarios se muestren en una sola hoja de trabajo o en una sola página impresa, estas dos macros siguientes le resultarán útiles.
Imprimir comentarios en una página adicional
Dentro de Excel, existen configuraciones que controlan los comentarios. No solemos buscarlos a menos que tengamos un problema o requisito específico. Una de estas opciones controla la configuración de impresión. La siguiente macro imprimirá todos los comentarios en una página separada.
Sub PrintSetupListComments()'Crear variablesDim ws As WorksheetDim printOptions As Long'Establecer variablesSet ws = ActiveSheetprintOptions = xlPrintSheetEnd'Establecer comentarios para imprimir en una página adicionalws.PageSetup.PrintComments = printOptionsEnd Sub
La configuración ImprimirComentarios tiene tres opciones. Por lo tanto esta línea de código:
opciones de impresión = xlPrintSheetEnd
Se puede canjear por una de estas opciones.
Configure los comentarios para imprimir si se muestran:
opciones de impresión = xlImprimirEnLugar
Configure los comentarios para que nunca se impriman:
opcionesdeimpresión = xlImprimirSinComentarios
Enumere todos los comentarios en una hoja de trabajo separada
El siguiente código creará una nueva hoja de trabajo que enumera todos los comentarios. La verificación de errores es limitada, por lo que si ya tiene una hoja de trabajo llamada "Comentarios", mostrará un error.
Sub ListAllCommentsOnSeparateSheet()'Crear variablesDim wb como WorkbookDim ws As WorksheetDim newWs As WorksheetDim c As RangeDim i As Integer'Establecer variablesSet wb = ActiveWorkbookSet newWs = wb.Worksheets.AddnewWs.Name = "Comments"'Insertar fila de encabezado en Comments WorksheetnewWs.Cells (1, 1).value = "Sheet"newWs.Cells(1, 2).value = "Cell Ref"newWs.Cells(1, 3).value = "Comment"'Recorre cada hoja de trabajo para cada ws en wb. Hojas de trabajo 'Ignorar errores de hojas de trabajo sin comentarios En caso de error Reanudar Siguiente 'Recorrer cada celda con un comentario Para cada c En ws.Cells.SpecialCells(xlCellTypeComments) 'Si no hay errores (es decir, existen comentarios) Si Err.Number = 0 Luego 'Contador de incremento i = i + 1 'Enumere los comentarios en la hoja de trabajo de comentarios newWs.Cells(i + 1, 1).value = ws.Name newWs.Cells(i + 1, 2).value = c.Address newWs. Cells(i + 1, 3).value = c.comment.Text End If Next c 'Restablecer comprobación de errores En caso de error Ir a 0Siguiente wsEnd Sub
Cambiar la forma de todos los cuadros de comentarios en una hoja de trabajo
Los cuadros de comentarios siempre parecen cuadrados aburridos, pero pueden tener diversas formas. Utilice el siguiente código para cambiar todas las formas a cuadros con una esquina doblada.
Sub ChangeCommentsBoxShape()'Crear variablesDim ws As WorksheetDim com As commentDim shapeType As Long'Establecer variablesSet ws = ActiveSheetshapeType = msoShapeFoldedCorner'Recorre cada celda con un comentarioPara cada com En ws.Comments 'Cambiar la forma com.Shape.AutoShapeType = shapeTypeNext comEnd Sub
Algunas formas alternativas que puedes probar son:
- msoFormaRedondeadoRectángulo
- msoFormaOval
- msoShapeRectangle
Si desea otras formas, probablemente sea mejor usar la grabadora de macros para encontrar el nombre de la forma, o puede usar la función IntelliSense. IntelliSense enumerará todas las opciones disponibles como se muestra en la captura de pantalla a continuación.
Deja una respuesta