Macro en Excel

Hola. Estoy intentando hacer una macro para que se abra un formulario para hacer una acción cuando el usuario por ejemplo selecciona una figura (forma) de una hoja (por ejemplo cambiar el nombre a la figura). Puedo hacerlo añadiendo código a la propia figura o bien recorriendo todas las existentes una por una. Mi problema es que puede haber muchas y diferentes figuras en la hoja. Ello me obligaría a ir una por una añadiendo el mismo código a todas. Me gustaría saber si es posible hacerlo con una única macro que "saque" o "recuerde" de algún sitio la referencia a la última figura que había seleccionada antes de abrir el formulario. No sé si es posible.
Gracias de antemano.
Respuesta
1
Primero en un módulo declaras una variable pública:
Public nbreObjeto As String
Después agregas en el módulo una rutina (o quizás ya la tengas) a la que podes llamar con atajo de teclado:
Sub llamaUF()
UserForm1.Show
End Sub
En el Userform haces referencia al objeto seleccionado:
'en el ejemplo le asigna línea de borde azul
nbreObjeto = Selection.Name
ActiveSheet.Shapes(nbreObjeto).Select
Selection.ShapeRange.Line.ForeColor.SchemeColor = 12
Selection.ShapeRange.Line.Visible = msoTrue
Lo que debe quedar seleccionado antes de llamar al UF es el objeto a modificar.
Saludos y no olvides finalizar si el tema queda solucionado.
Funciona! Además he descubierto con tu ejemplo por que a mi no me funcionaba. Tenía algo parecido a tu propuesta pero activada desde un botón en la propia hoja, y claro al pulsar el botón se "pierde" la forma seleccionada y da error.
Muchas gracias por tu aportación.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas