Macro para obtener el nombre de la forma (Shape)

Buenas tardes,

Estoy comenzando a estudiar BASIC, pero tengo una idea que requiere la creación de una macro que me devuelva el nombre de la forma donde se hizo clic para lanzar la macro.

Esto lo he hecho en VBA con la funcion “.shape(application.caller).name”

Cual seria su equivalente? o como podria logar mi objetivo?

Gracias por su apoyo.

LibreOffice Basic no tiene una función incorporada simple como Application.Caller.

Para lograrlo tendría que configurar la macro para que aceptar un argumento y que la forma esté configurada para pasar el llamador cuando se ejecuta la macro.

En LibreOfficeBasic para definir la macro con un solo argumento, que recibirá el objeto que la llamó, podría ser un código similar a:

Sub ObtenerNombreDeForma(oFormaEvento As Object)
    ' Verifica si el objeto pasado tiene una propiedad "Name"
    If Not IsNull(oFormaEvento) Then
        ' El nombre de la forma se encuentra en la propiedad .Name del objeto
        Dim sNombreForma As String
        sNombreForma = oFormaEvento.Name
        
        MsgBox "El nombre de la forma que llamó la macro es: " & sNombreForma, 0, "Llamador de Macro"
    Else
        MsgBox "No se pudo obtener el objeto llamador.", 16, "Error"
    End If
End Sub

Te agradezco tu apoyo.

Intenté como lo comentas pero me arrojo un error, investigando encontré que también que podía usar SOURCE después del evento pero me vuelve a arrojar el mismo error.

Ahora, como dije estoy aprendiendo y se que hay más de una forma de lograr mi objetivo, ahora lo estoy intentando con los controles de formulario, lo que quería era un botón personalizado, ahí es cuando entra la opción de botón con imagen, ajuste la macro para su uso y éxito ( me devuelve el nombre del botón)

Gracias por la guía me fue de ayuda.