Si algunos de nuestros foros, manuales, ALDOS, paquetería o proyectos te han resultado de ayuda, apreciaremos mucho nos apoyes con un donativo.

Trabajando con funciones personalizadas en LibreOffice.

Nuestro buen amigo Mauricio Baeza nos envía un interesante artículo referente a las funciones personalizadas en LibreOffice.

Las más de trescientas funciones disponibles en LibreOffice Calc, nos dan una amplia gama de opciones para resolver una gran cantidad de problemas, pero, aun con esta cantidad, puede ser que no todas o la combinación de algunas, no resuelvan nuestras necesidades, en estos casos, podemos hacer nuestras propias funciones. La forma más sencilla es la siguiente, donde tenemos el nombre de la función y el tipo de valor que esperamos que retorne.

Option Explicit

Function MiFuncion() As String

	MiFuncion = "Esta función no hace nada"

End Function

Si vas a la interfaz de Calc, ya puedes usar esta función:



Recuerda que una función, generalmente recibe unos datos llamados parámetros o argumentos, con estos datos, hacemos una serie de operaciones y regresamos el resultado como en el siguiente ejemplo:

Function PerimetroCirculo( Radio As Single ) As Double

Const PI As Single = 3.141592

	PerimetroCirculo = ( 2 * Radio ) * PI
	
End Function 




Las funciones personalizadas son idóneas para reemplazar formulas grandes en Calc donde se usan varias funciones anidadas, por ejemplo, la siguiente formula, recibe una cantidad de días y nos devuelve el resultado en años, meses y días:


La formulas completa que no se alcanza a ver en la imagen anterior es:

=INT(A18/365.2)&" años, "&INT((A18-INT(A18/365.2)*365.2)/30.42)&" mes y "&INT(A18-(INT(A18/365.2)*365.2+INT((A18-INT(A18/365.2)*365.2)/30.42)*30.42))&" días"

Vamos a obtener el mismo resultado con la siguiente función personalizada:

Option Explicit

Function AMD( Dias As Long ) As String
Dim iAnos As Integer
Dim iMeses As Integer
Dim iDias As Integer
Dim sTmp As String
Const sAno As Single = 365.20
Const sMes As Single = 30.42

	iAnos = Dias \ sAno 
	Select Case iAnos
		Case 1 : sTmp = "1 año, "
		Case Else : sTmp = iAnos & " años, "
	End Select
	iMeses = ( Dias - ( iAnos * sAno ) ) \ sMes
	Select Case iMeses
		Case 1 : sTmp = sTmp & "1 mes y "
		Case Else : sTmp = sTmp & iMeses & " meses y "
	End Select
	iDias = Int( Dias - (( iAnos * sAno ) + (iMeses * sMes )) )

	If iDias < 0 Then iDias = 0 

	Select Case iDias
		Case 1 : sTmp = sTmp & "1 día"
		Case Else : sTmp = sTmp & iDias & " días"
	End Select	
	
	AMD = sTmp

End Function
Y el resultado:





Como ves, no puede ser más sencillo.


¡Feliz programación!

Fuente: Universo Libre.


Atención: Salvo que se indique lo contrario, la licencia del texto de este documento es Creative Commons Reconocimiento 2.5, mediante la cual usted tiene permitido copiar, modificar, comunicar y distribuir el contenido de este texto, de manera total o parcial, y publicarlo o difundirlo en cualquier otro sitio de Internet o medio de comunicaciòn, siempre y cuando incluya o cite (1)el nombre de este sitio de Internet, (2)enlace permanente de este documento, (3)nombre del autor y (4)la misma licencia de distribución.

Opciones: Imprimir | Recomendar | Enlace permanente

Twitter Facebook Google Bookmarks Bitacoras.com Wikio Menéame Technorati Bloglines Digg Yahoo Buzz

Seguimientos (Trackback)

URL de seguimiento para esta entrada:
http://www.alcancelibre.org/trackback.php/trabajando-funciones-personalizadas-libr
  • Trabajando con funciones personalizadas en LibreOffice.
  • 2comentarios
  • Crea cuenta nueva
Agregar comentario

Los siguientes comentarios son de la persona que los haya enviado. Este sitio se deslinda de cualquier responsabilidad respecto de las opiniones expresadas por los participantes en nuestros foros y secciones de comentarios, y el hecho de publicar las mismas no significa que se esté de acuerdo con éstas.

  • Trabajando con funciones personalizadas en LibreOffice.
  • Escrito por:Oscar Hernández el  26/07/2011, 13:40

waauuu

Muy bueno, por lo que veo, es como si estuvieras programando en visual basic?

---
Sabio no es aquel que dedica su vida a aprender sino el que la dedica a enseñar.

---
Sabio no es aquel que dedica su vida a aprender sino el que la dedica a enseñar.
Editado el 26/07/2011, 13:49 por Oscar Hernández
  • Trabajando con funciones personalizadas en LibreOffice.
  • Escrito por:Mauricio Baeza el  26/07/2011, 14:07

Hola Oscar...

Si, el LibOBasic es una implementación del añejo, fácil (y medio obsoleto) Basic, pero espera los siguiente artículos donde pasaremos a hacer cosas más interesantes pero con Python...

Saludos

---
__________________________________________________
Todo cuando no podemos dar nos posee... Andre Gide