Excel y VB - Recuperar el nombre del objeto clicado

ridertart Mensajes publicados 14 Estado Miembro -  
 OBO29 -
Hola,

Me gustaría saber cómo recuperar el nombre de un objeto sobre el cual se ha hecho clic (en Excel) usando VB.

Por ejemplo, tengo varios rectángulos y me gustaría recuperar los parámetros de color, por ejemplo, del rectángulo sobre el que he hecho clic.

Sin embargo, cuando hago clic en un rectángulo, se ejecuta una macro... ¿esto supone un problema para recuperar el nombre...?

Gracias de antemano.
Configuración: Windows XP Internet Explorer 7.0

4 respuestas

  1. Willy
     


    Sub FormaClic()

    Dim NombreForma As String
    NombreForma = Application.Caller

    Msgbox NombreForma

    End Sub

    Asignas la macro a los objetos deseados

    ¡Gracias a ChrisKang en otra discusión!
    12
    1. Foxter
       
      ¡Muchas gracias!
      0
    2. Inconnu
       
      Super Willy, mil gracias.
      0
    3. Ahkrane
       
      Muchas gracias, responde perfectamente a una necesidad que tenía

      Ahkrane
      0
    4. OBO29
       
      ¡De nada!
      0
  2. amigo
     
    Hola,

    Veo que sigues teniendo problemas con tus rectángulos de colores.

    Como ya te han dicho, a veces solo necesitas grabar una macro para ver la luz.
    Voy a explicarte cómo procedo.

    Por ejemplo, dibujo un rectángulo "Rectángulo 1", luego grabo una macro "Macro1" (Menú Herramientas Macro Nueva Macro)
    Clic derecho sobre el rectángulo, Formato de la forma automática...
    Cambio el color de fondo, el borde... Cierro el cuadro de diálogo.
    Detengo la grabación de Macro1, Editor de Visual Basic, Módulo1 (o Módulo2...), y recupero el código

    Sub Macro1()
    '
    ' Macro1 Macro
    ' Macro grabada el 18/02/2008
    '
    '
    ActiveSheet.Shapes("Rectángulo1").Select
    Selection.ShapeRange.Fill.Visible = msoTrue
    Selection.ShapeRange.Fill.Solid
    Selection.ShapeRange.Fill.ForeColor.SchemeColor = 11
    Selection.ShapeRange.Fill.Transparency = 0#
    Selection.ShapeRange.Line.Weight = 0.75
    Selection.ShapeRange.Line.DashStyle = msoLineSolid
    Selection.ShapeRange.Line.Style = msoLineSingle
    Selection.ShapeRange.Line.Transparency = 0#
    Selection.ShapeRange.Line.Visible = msoTrue
    Selection.ShapeRange.Line.ForeColor.SchemeColor = 11
    Selection.ShapeRange.Line.BackColor.RGB = RGB(255, 255, 255)
    End Sub

    No es tan complicado. Ahora quiero mostrar ciertas propiedades de este rectángulo cuando hago clic en él.

    Creo una macro que se llama Rectángulo1_CuandoClic(), atención a la ortografía, el nombre es importante porque se refiere a un evento predefinido.

    Sub Rectángulo1_CuandoClic()
    'para responder a tu pregunta muestro el nombre
    'pero no veo mucho sentido en conocer el nombre del objeto
    MsgBox ActiveSheet.Shapes("Rectángulo 1").Name

    'Accesoriamente aquí está el color del objeto
    ActiveSheet.Shapes("Rectángulo 1").Select
    MsgBox Selection.ShapeRange.Fill.ForeColor.SchemeColor
    End Sub

    Voy a mi hoja de Excel, clic derecho en rectángulo1, Asignar una macro -> Rectángulo1_CuandoClic()
    Está terminado. Cuando paso sobre el rectángulo, el cursor cambia. Hago clic en él y los mensajes programados aparecen.

    Espero que esto te ayude un poco. Adiós.
    2
    1. ridertart
       
      ¿Tienes una respuesta que podría ayudarme?
      0
  3. ridertart Mensajes publicados 14 Estado Miembro 17
     
    ¡Sí, gracias por tu ayuda!

    El problema es que entendí bien el procedimiento para grabar una macro para recuperar todos los parámetros de mi rectángulo.

    De hecho, tengo una treintena de rectángulos, cada uno con un color y patrones diferentes.

    Tengo una macro asignada para todos los rectángulos (del 1 al 30).

    Y me gustaría que esta macro recuperara los parámetros del rectángulo clicado para transferirlos a otro rectángulo que habría dibujado previamente (y que es blanco por defecto).

    Esto podría evitar tener que hacer una macro para cada rectángulo de color y patrón específicos... : (evitamos todo eso :)
    Sub Rectángulo1_CuandoClic()
    ...
    End Sub

    Sub Rectángulo2_CuandoClic()
    ...
    End Sub
    ...
    ...
    ...
    Sub Rectángulo29_CuandoClic()
    ...
    End Sub
    Sub Rectángulo30_CuandoClic()
    ...
    End Sub

    Así solo tengo una macro que recupera el nombre del rectángulo clicado, que recupera el color y el patrón de ese rectángulo y que permite colorear otro rectángulo gracias a esos parámetros recuperados...

    No debe ser tan complicado, ¿verdad? Pero para mí es demasiado por ahora.

    Gracias a todos y especialmente a Amigo :)
    1
  4. Yopboy
     
    Cool, ¿alguien tendría los términos a utilizar para recuperar no solo el nombre, sino la posición y las dimensiones de mi rectángulo de la misma manera?
    0