Cambio de color al hacer click en un objeto forma

Soy principiante y autodidacta en macros y vba en excel.
Me gustaría hacer una macro que se ejecutase al hacer clic en un objeto shapes y que este cambiase de color. He logrado crear esta macro para un objeto shapes concreto. Mi problema es que necesito crear más de 20.000 objetos shapes como ese y me parece una locura copiar y pegar el código una vez por objeto. He intentado hacerlo poniendo un código en el que se cambie el color del shape seleccionado pero el problema está en que al asignar la macro al shape cuando clicas en él este no se selecciona y por lo tanto la macro da error.
También he intentado hacer que la macro se ejecute al seleccionar un objeto shapes pero no he conseguido hacerlo. He visto muchos ejemplo de como hacer que se ejecute una macro al seleccionar una celda pero ninguno de que se ejecute al seleccionar un objeto shapes y no he sido capaz de modificarlo para que funcionase.

1 respuesta

Respuesta
1

H o l a: Asigna la macro CambiaColor a todos los objetos

Sub CambiarColor()
'Por.Dante Amor
    If TypeName(Application.Caller) = "String" Then
        nombre = Application.Caller
        ActiveSheet.DrawingObjects(nombre).Interior.ColorIndex = 5    'colorindex 0 a 56
    End If
End Sub

Puedes utilizar también el color con RGB:

ActiveSheet.DrawingObjects(nombre).Interior.Color = RGB(127, 187, 199)  'color red, green, blue
'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

Gracias por tu respuesta, pero lo que estoy buscando es evitar tenerle que asignar un código a cada una de las formas, ya que además de que voy a tener muchísimas también se van a añadir y borrar formas y el usuaría tendría que asignar nuevamente la macro cada vez que esto sucediese.

Necesitaría un código que no tuviera que asignarlo a cada una de las formas, sino un código general que valiese para todas las formas (independientemente de cuantas haya) y que se ejecute al clicar en una de ellas, cambiándola de color.

Gracias y un saludo!

Primero, para que la macro CambiarColor se ejecute, tienes que asignar la macro a cada una de las formas.

Segundo, lo que solicitaste fue esto:

"Me gustaría hacer una macro que se ejecutase al hacer clic en un objeto shapes y que este cambiase de color"

Pues bien, la macro realiza exactamente lo solicitado.

Ahora bien, con gusto realizo otra macro para asignar automáticamente la macro "CambiarColor" a todas las autoformas existentes en el libro, pero antes deberás valorar esta respuesta y crear una nueva pregunta. En el desarrollo de la nueva pregunta escribe para Dante Amor, ahí explicas que requieres una macro para asignar la macro "CambiarColor" a toda las autoformas.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas