Asignar macros a una lista desplegable

Hola,
Tengo una lista desplegable (creada con la opción validación de datos en la celda F5) con una serie de entradas, en concreto, son 7 registros que se pueden seleccionar en la lista, como por ejemplo éstos:
Venta sin financiación
Venta con financiación normal
Venta con financiación especial
Renting sin financiación
Renting con financiación normal
Renting con financiación especial
Mostrar todo

Por otro lado, he creado una macro para cada registro anterior, de manera que me oculte las filas que no aplican. Es decir, por ejemplo, para el registro ‘Venta sin financiación’ de la lista desplegable anterior, he creado la macro 1, la cual, oculta las filas que no aplican; por ejemplo, oculta desde la fila 151 a la 300. Para el registro ‘Venta con financiación’, he creado la macro 2 que oculta las filas que no le corresponden, por ejemplo, desde la fila 108 a la 150 y desde la fila 200 a la 300. Y así, sucesivamente he creado una macro para cada uno de los registros de la lista desplegable.

Las macros funcionan de manera separada pero, para no tener que darle a ejecutar cada vez que quiera ejecutar una de las 7 macros creadas, necesito que cada una de éstas se ejecute cuando se seleccione su registro correspondiente de la lista desplegable; de tal manera que, cuando se seleccione un registro de la lista desplegable, la macro en cuestión se ejecute.
Siguiendo con el ejemplo anterior, si selecciono Venta sin financiación, debería ejecutarse la macro 1, y así con todos los registros de la lista desplegable (es decir, cuando seleccione un registro de la lista, que se ejecute su macro).

No entiendo de programación, y viendo vídeos, he conseguido crear las macros. Pero no sé cómo puedo asignar cada macro a cada registro de la lista desplegable. Sé que hay botones para que se puedan ejecutar las macros, pero necesito que se ejecuten desde la misma lista desplegable.

Por favor, ¿alguien puede ayudarme y decirme qué códigos tengo que poner para que se puedan ejecutar?
He conseguido averiguar cómo hacerlo en Visual Basic, que sería como sigue, pero he pegado esto en LibreOffice, y no me funciona. Supongo que los códigos no serán los mismos.
Por favor, ¿alguien sabe cómo puedo solucionar esto? Muchas gracias.

El código en Visual Basic creo que es así, pero no sé cómo transformar esto en el lenguaje para LibreOffice:

Private Sub Worksheet_Change(ByVal Target As Range)
If Range(“F5”) = “” Then
Else

If Not Intersect(Target, Range(“F5”)) Is Nothing Then
Select Case Range(“F5”)
Case “Mostrar todo”: Mostrar_todo
Case “Venta sin financiación”: Venta_sin_financiacion
Case “Venta con financiación normal”: Venta_con_financiacion_normal
Case “Venta con financiación especial”: Venta_con_financiacion_especial
Case “Renting sin financiación”: Renting_sin_financiacion
Case “Renting con financiación normal”: Renting_con_financiacion_normal
Case “Renting con financiación especial”: Renting_con_financiacion_especial
End Select
End If
End If
End Sub

Puedes usar el evento “Contenido cambiado” de la hoja

Sub contenido_cambiado(celda)

	If celda.ImplementationName <> "ScCellObj" Then
		Exit Sub
	End If
	
	If celda.CellAddress.Row <> 4 Or celda.CellAddress.Column <> 5 Then
		Exit Sub
	End If
	
	If celda.Type = 0 Then
		Exit Sub
	End If	
	
	Select Case celda.String
		Case "Mostrar todo": Mostrar_todo
		Case "Venta sin financiación": Venta_sin_financiacion
		Case "Venta con financiación normal": Venta_con_financiacion_normal
		Case "Venta con financiación especial": Venta_con_financiacion_especial
		Case "Renting sin financiación": Renting_sin_financiacion
		Case "Renting con financiación normal": Renting_con_financiacion_normal
		Case "Renting con financiación especial": Renting_con_financiacion_especial
	End Select
	
End Sub

Sub Mostrar_todo()
	MsgBox "Mostrar Todo"
End Sub

evento_contenido_cambiado.ods (8.8 KB)

Muchas gracias.
El código del ‘evento de contenido cambiado’ que me has indicado, lo he pegado en el mismo módulo donde se encuentran las macros (concretamente, al final del módulo, debajo del código de la última macro escrita), pero no me funciona. Algo no estaré haciendo bien.
Sobre esto, tengo varias dudas:

  1. El código del ‘evento de contenido cambiado’ que me has indicado, ¿debe estar en el mismo módulo que las macros a las que hace referencia, o las macros deben estar en un módulo, y el ‘evento de contenido cambiado’ debe estar escrito en otro módulo?

  2. En el caso de que todo debe estar en un mismo módulo, ¿qué debe estar escrito antes: primero las macros y debajo el evento, o al revés?

mira el archivo de ejemplo, mira como esta asignada la macro al evento de la hoja.

https://help.libreoffice.org/latest/es/text/scalc/01/events_sheet.html

1 - No necesariamente
2 - No importa el orden

Disculpa mi ignorancia. He entrado en el enlace, y no veo el ejemplo que me dices sólo veo esto:

compañero, el archivo de ejemplo que te anexe desde mi primer respuesta, ahí esta todo.

Jajaja. Discúlpame. Estaba buscando en la web.
Voy a echarle un vistazo, a ver si doy con la tecla. Gracias.

Hola @elmau .
Disculpa mi ignorancia sobre programación.
He incluido las macros en el archivo de ejemplo que me enviaste, pero no consigo que se ejecuten desde el listado de la lista desplegable que tienes creada en el ejemplo, y no sé qué parte es la que no estoy haciendo bien.
Te envío adjunto el archivo, junto con las macros creadas, por si me pudieses echar una mano, te lo agradecería infinitamente.
Si necesitas alguna información sobre ello, por favor, no dudes en preguntarme. Muchas gracias.
evento_contenido_cambiado orig prueba 1.ods (16.8 KB)

Tienes todos los eventos duplicados, solo borra todos los que tienen MSGBOX y debe de funcionar.

@elmau Ya parece que funciona con lo último que me has dicho. Muchísimas gracias.