Macros > Error 1004 al agregar comentarios a celdas

Tengo un archivo de excel en el cual contiene botones para ocultar y aparecer filas; sin embargo si agrego comentarios a alguna de las celdas me aparece el siguiente error: "Run-Time error '1004': unable to set the hidden property of the ranges class"

Este error solo me aparece si le agrego comentarios a alguna de las celdas; si remueve el comentario la macro vuelve a funcionar correctamente; ¿Saben a que se debe?

Dejo el codigo por si es necesario:

Sub Rollup()
Rows("5:15").EntireRow.Hidden = False
Rows("16:17").EntireRow.Hidden = True
Rows("18:19").EntireRow.Hidden = False
Rows("20:23").EntireRow.Hidden = True
Rows("24:25").EntireRow.Hidden = False
Rows("26:27").EntireRow.Hidden = True
Rows("28:29").EntireRow.Hidden = False
Rows("30:35").EntireRow.Hidden = True
Rows("36:40").EntireRow.Hidden = False
Rows("41:87").EntireRow.Hidden = True
Rows("88:91").EntireRow.Hidden = False
Rows("92:100").EntireRow.Hidden = True
Rows("101:102").EntireRow.Hidden = False
Rows("103:108").EntireRow.Hidden = True
Rows("109:112").EntireRow.Hidden = False
Rows("113:149").EntireRow.Hidden = True
Rows("150").EntireRow.Hidden = False
Rows("151:1048576").EntireRow.Hidden = True
End Sub
Sub All()
Rows("5:150").EntireRow.Hidden = False
Rows("16:17").EntireRow.Hidden = True
Rows("94:100").EntireRow.Hidden = True
Rows("151:1048576").EntireRow.Hidden = True
End Sub
Sub Operation()
Rows("5:15").EntireRow.Hidden = False
Rows("16:17").EntireRow.Hidden = True
Rows("18:19").EntireRow.Hidden = False
Rows("20:23").EntireRow.Hidden = True
Rows("24:53").EntireRow.Hidden = False
Rows("54:87").EntireRow.Hidden = True
Rows("88:93").EntireRow.Hidden = False
Rows("94:102").EntireRow.Hidden = True
Rows("103:106").EntireRow.Hidden = True
Rows("107:125").EntireRow.Hidden = False
Rows("126:129").EntireRow.Hidden = True
Rows("130:133").EntireRow.Hidden = False
Rows("134:139").EntireRow.Hidden = True
Rows("140:143").EntireRow.Hidden = False
Rows("144:149").EntireRow.Hidden = True
Rows("150").EntireRow.Hidden = False
Rows("151:1048576").EntireRow.Hidden = True
End Sub

2 respuestas

Respuesta
2

Visita:

Cursos de Excel y Macros

--------------------------

Hice pruebas con tu código, puse comentarios en las celdas. Ejecuta las macros y las filas se ocultan y se muestran con todo y comentarios.

Podrías compartirme tu archivo con el ejemplo de los comentarios y las macros, me dices en cuál hoja están las macros, cuál macro ejecuto para reproducir el erro.

Si tu archivo contiene datos sensibles, reemplázalo con datos genéricos.

Comparte tu archivo en google drive, márcalo para compartir con cualquiera que tenga el enlace, copia el enlace y lo pegas aquí.

--------------------------

Recomendaciones:

Curso de macros. Consejos para empezar a programar. - YouTube

Curso de excel. Consejos y trucos de excel para mejorar la presentación de tus datos. - YouTube

Sal u dos Dante Amor

Hola, buen día!

Muchas Gracias por tu comentario!

Te comparto el archivo y agrego más información:

  1. El archivo se encuentra protegido ya que contiene fórmulas que no quisiera que el usuario manipulara. (En otros archivos ya lo he hecho de esta manera y el macro funciona)
  2. Hice algunas pruebas colocando comentarios en las celdas D12, D20, D111 y la macro continuo haciendo su función; sin embargo cuando agrego comentarios en la celda D125 se reproduce el error.
  3. El error aparece cuando se seleccionan los botones "Roll-up" &"Operation"; cuando se selecciona la opción "All" el macro funciona correctamente.

En la siguiente liga podrán ver el archivo:

 https://docs.google.com/spreadsheets/d/1Z2XUjy9COoFye49UppPPabh_fkAmSPpo/edit?usp=sharing&ouid=104841612500169395658&rtpof=true&sd=true 

Muchas Gracias!

Este es el problema:

Tienes un comentario de esta manera:

Cuando ocultas filas, el comentario permanece en su "sitio":

En la imagen anterior, el comentario permaneció en su sitio. No importa si el comentario está oculto o visible. El comentario permanece fijo en su "sitio". Y eso es debido a su propiedad: "No mover ni cambiar tamaño con celdas""

Cuando ocultas todas las filas de la hoja, entonces ya no tiene dónde poner el comentario y envía este mensaje de error:

En vba envía el mensaje:

----------------

Hay que cambiar la propiedad de todos los comentarios a: "Mover y cambiar tamaño con celdas".

De manera automática, agregué un código para cambiar la propiedad de los comentarios cada que ejecutas las macros, para que no tengas el error:

Sub Rollup()
  Call prop_comment
  Rows("5:15").EntireRow.Hidden = False
  Rows("16:17").EntireRow.Hidden = True
  Rows("18:19").EntireRow.Hidden = False
  Rows("20:23").EntireRow.Hidden = True
  Rows("24:25").EntireRow.Hidden = False
  Rows("26:27").EntireRow.Hidden = True
  Rows("28:29").EntireRow.Hidden = False
  Rows("30:35").EntireRow.Hidden = True
  Rows("36:40").EntireRow.Hidden = False
  Rows("41:87").EntireRow.Hidden = True
  Rows("88:91").EntireRow.Hidden = False
  Rows("92:100").EntireRow.Hidden = True
  Rows("101:102").EntireRow.Hidden = False
  Rows("103:108").EntireRow.Hidden = True
  Rows("109:112").EntireRow.Hidden = False
  Rows("113:149").EntireRow.Hidden = True
  Rows("150").EntireRow.Hidden = False
  Rows("151:1048576").EntireRow.Hidden = True
End Sub
Sub All()
  Call prop_comment
  Rows("5:150").EntireRow.Hidden = False
  Rows("16:17").EntireRow.Hidden = True
  Rows("94:100").EntireRow.Hidden = True
  Rows("151:1048576").EntireRow.Hidden = True
End Sub
Sub Operation()
  Call prop_comment
  Rows("5:15").EntireRow.Hidden = False
  Rows("16:17").EntireRow.Hidden = True
  Rows("18:19").EntireRow.Hidden = False
  Rows("20:23").EntireRow.Hidden = True
  Rows("24:53").EntireRow.Hidden = False
  Rows("54:87").EntireRow.Hidden = True
  Rows("88:93").EntireRow.Hidden = False
  Rows("94:102").EntireRow.Hidden = True
  Rows("103:106").EntireRow.Hidden = True
  Rows("107:125").EntireRow.Hidden = False
  Rows("126:129").EntireRow.Hidden = True
  Rows("130:133").EntireRow.Hidden = False
  Rows("134:139").EntireRow.Hidden = True
  Rows("140:143").EntireRow.Hidden = False
  Rows("144:149").EntireRow.Hidden = True
  Rows("150").EntireRow.Hidden = False
  Rows("151:1048576").EntireRow.Hidden = True
End Sub
Sub move_Comments()
  Dim cmt As Comment
  For Each cmt In ActiveSheet.Comments
    cmt.Shape.Top = Range("A1").Top
  Next
End Sub

----- --

Recomendaciones:

Curso de excel. Formato condicional dinamico - YouTube

Curso de macros. Declarar variables en vba excel. - YouTube

Sal u dos Dante Amor

Me faltó poner este código:

Sub prop_comment()
  Dim cmt As Comment
  For Each cmt In ActiveSheet.Comments
    cmt.Shape.Placement = xlMoveAndSize
  Next
End Sub

Ponlo después de las otras macros.

----- --

Esta macro no es necesaria:

Sub move_Comments()
  Dim cmt As Comment
  For Each cmt In ActiveSheet.Comments
    cmt.Shape.Top = Range("A1").Top
  Next
End Sub

Hola! 

Lo incluí de esta manera, algo hice mal? Me sigue marcando el error: 

Gracias!

Sub Rollup()
Call prop_comment
Rows("5:15").EntireRow.Hidden = False
Rows("16:17").EntireRow.Hidden = True
Rows("18:19").EntireRow.Hidden = False
Rows("20:23").EntireRow.Hidden = True
Rows("24:25").EntireRow.Hidden = False
Rows("26:27").EntireRow.Hidden = True
Rows("28:29").EntireRow.Hidden = False
Rows("30:35").EntireRow.Hidden = True
Rows("36:40").EntireRow.Hidden = False
Rows("41:87").EntireRow.Hidden = True
Rows("88:91").EntireRow.Hidden = False
Rows("92:100").EntireRow.Hidden = True
Rows("101:102").EntireRow.Hidden = False
Rows("103:108").EntireRow.Hidden = True
Rows("109:112").EntireRow.Hidden = False
Rows("113:149").EntireRow.Hidden = True
Rows("150").EntireRow.Hidden = False
Rows("151:1048576").EntireRow.Hidden = True
End Sub
Sub All()
Call prop_comment
Rows("5:150").EntireRow.Hidden = False
Rows("16:17").EntireRow.Hidden = True
Rows("94:100").EntireRow.Hidden = True
Rows("151:1048576").EntireRow.Hidden = True
End Sub
Sub Operation()
Call prop_comment
Rows("5:15").EntireRow.Hidden = False
Rows("16:17").EntireRow.Hidden = True
Rows("18:19").EntireRow.Hidden = False
Rows("20:23").EntireRow.Hidden = True
Rows("24:53").EntireRow.Hidden = False
Rows("54:87").EntireRow.Hidden = True
Rows("88:93").EntireRow.Hidden = False
Rows("94:102").EntireRow.Hidden = True
Rows("103:106").EntireRow.Hidden = True
Rows("107:125").EntireRow.Hidden = False
Rows("126:129").EntireRow.Hidden = True
Rows("130:133").EntireRow.Hidden = False
Rows("134:139").EntireRow.Hidden = True
Rows("140:143").EntireRow.Hidden = False
Rows("144:149").EntireRow.Hidden = True
Rows("150").EntireRow.Hidden = False
Rows("151:1048576").EntireRow.Hidden = True
End Sub
Sub prop_comment()
Dim cmt As Comment
For Each cmt In ActiveSheet.Comments
cmt.Shape.Placement = xlMoveAndSize
Next
End Sub

Ejecuta esta primero esta macro:

Sub move_Comments()
  Dim cmt As Comment
  For Each cmt In ActiveSheet.Comments
    cmt.Shape.Top = Range("A1").Top
  Next
End Sub

Después de la macro anterior, ejecuta tus macros y me comentas.

Respuesta
1

Te invito a mirar el video N° 24 de mi canal: 3 macros de ejemplo para trabajar con Comentarios.

https://www.youtube.com/watch?v=6eYHZp2BYm8&list=PLrhlyizWZzOERwRMxIIy-BTP-CyXh_K5N&index=48&t=303s 

Sdos.

Elsa

http://aplicaexcel.com

https://www.youtube.com/@ElsaMatilde 

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas