Usar una función definida en basic

Tenía otro paquete ofimático en el cual tenía definida la siguiente función escrita por mí.

Rem Attribute VBA_ModuleType=VBADocumentModule
Option VBASupport 1
PUBLIC Function sumapormes(f As Range, m As Integer, a As Integer, h As Range)

' f=rango fechas
' m=mes
' a=año
' h=rango a sumar

Dim rng As Object, cf As Integer, cf2 As Integer ' cf=contador fecha
suma = 0
For Each rng In f
cf = cf + 1
  If Month(rng.Value) = m And Year(rng.Value) = a Then
   For Each rng2 In h
      cf2 = cf2 + 1
      If cf2 = cf Then suma = suma + rng2.Value
   Next rng2
  End If
   cf2 = 0
Next rng

sumapormes = suma


End Function

Y ahora, en LibreOffice Calc me da un Err:
Cómo puedo hacer esto en LibreOffice?

Gracias por adelantado

¿Has intentado usar sumar.si, antes de una formula personalizada?

Gracias por tu respuesta.

Sí, ya lo intenté con sumar.si

Lo que necesito es sumar las cantidades de una columna si el mes y el año, que está en la columna fecha, son los que yo quiero.

¿Cómo lo puedo hacer?

un archivo de ejemplo ayudará a quien quiera ayudarte de forma más fácil…

Pues aquí está el archivo de ejemplo.
Conrtrol de tiempos.xls (23.7 KB)

Nota: hay que cambiarlle la extensión por .xlsm

Pues parece que no se necesita una macro para obtener los resultados; con una tabla dinámica es suficiente. Pero si quieres hacer difícil lo fácil…(puedes seguir investigado).
Por otro lado, si vas a trabajar con LibreOffice, sería mejor que utilizaras formatos libres (.ods en este caso)
Conrtrol de tiempos.xls (31,1 KB)

Ya conseguí solucionarlo. La función está bien pero hay que situarla en Mis macros y diálogos.

De todas formas, muchas gracias por la colaboración.

Saludos

Creo que con funciones de Calc puedes obtener el resultado, pero si quiere usar una función personalizada, y usar sintaxis de Libo Basic, cuando le pasas un rango, en realidad le pasas los valores del rango, como una matriz de matrices, mira este ejemplo y adaptalo a tu función:

Function misuma(rango) As Double
	s = 0
	For Each row In rango
		s = s + row(0)
	Next
	misuma = s
End Function

image

Esa función no suma por mes y año, que es lo que quiero conseguir.

mira este ejemplo y adaptalo a tu función

Prueba con la función SUMAR.SI.CONJUNTO

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