¿Cómo encontrar una forma en MS Excel?

Oct 16 2020

¿Cómo debería / puedo encontrar una forma específica en una hoja de trabajo en MS Excel?

Respuestas

1 MaybeWeAreAllRobots Oct 16 2020 at 05:26

Respondiendo a mi propia pregunta aquí, ya que no puedo encontrar la publicación original y hay muchas publicaciones similares. En resumen, la mejor manera de encontrar una forma en una hoja es recorrer todas las formas de la hoja para encontrar la que está buscando. Como:

...
For Each shp In .Shapes
    arrShapes(shp.ID, 0) = .Cells(shp.TopLeftCell.row, colItemNum).Value
    arrShapes(shp.ID, 1) = shp.TopLeftCell.Address
    arrShapes(shp.ID, 2) = shp.TopLeftCell.row
    arrShapes(shp.ID, 3) = shp.TopLeftCell.Column
Next shp

Este código coloca todas las formas en una matriz para buscar más tarde.

¡ADVERTENCIA! ¡Hay algunas peculiaridades que encontré al usar este código!

¡MS Excel usa formas para los comentarios! Si tiene un comentario en una celda, MS Excel lo incluirá en las formas de la hoja. Estos son AutoShapeType = msoShapeRectangle, tan difíciles de distinguir de otros cuadros de texto. Puede identificarlos donde Type = msoComment. Puede intentar filtrar comentarios específicos por su nombre predeterminado, que suele ser algo así como "Commentn", donde n es simplemente un número de serie. No estoy seguro de cómo están numerados. Las referencias de posición de celda (UpperLeft, BottomRight, etc.) se refieren a la ubicación del cuadro de texto para el comentario CUANDO SE MUESTRA, NO para la celda principal, aunque están cerca.

El ID de las formas no es el mismo que el INDICE. Por ejemplo, la primera forma en una hoja que encontré (que contiene 3 formas reales y 2 comentarios) tenía una ID de 15361. No el 1-5 que esperaba.

Codifique en consecuencia.