Funciones que devuelven matrices en LibreOffice.

Continuando con nuestro artículos acerca de funciones personalizadas para LibreOffice y OpenOffice.org, ahora vemos como devolver una matriz.

Las funciones personalizadas, también pueden devolver matrices, como en el siguiente ejemplo.

Option Explicit

Function DatosTexto( Cadena As String )
Dim sLetra As String
Dim co1 As Integer, co2 As Integer, co3 As Integer
Dim mDatos(2)
   
    For co1 = 1 To Len(Cadena)
        sLetra = LCase(Mid(Cadena,co1,1))
        If InStr(1,"aeiouáéíóú",sLetra) Then
            co2 = co2 + 1   
        ElseIf InStr(1," ?¿¡!.,:;",sLetra) Then
            co3 = co3 + 1
        End If
    Next
   
    mDatos(0) = co2
    mDatos(1) = Len(Cadena)-co2-co3
    mDatos(2) = co3
   
    DatosTexto = mDatos

End Function 


Pero al usarla en la hoja de calculo, tenemos que introducirlas como una función matricial, esto se logra presionando la combinación de teclas CTRL+SHIFT+ENTER. Observa las llaves que encierran a la función en la barra de formulas.
Las funciones personalizadas que devuelven matrices son utiles para, entre otros casos, cuando a partir de unos pocos valores iniciales podemos obtener mucha información, por ejemplo, a partir del radio de un círculo, podemos obtener su diámetro, perímetro y área, con la siguiente función

Option Explicit

Function DatosCirculo( Radio As Single )
Dim mDatos(2)
Const PI As Double = 3.14159

    mDatos(0) = Radio * 2
    mDatos(1) = Radio * 2 * PI
    mDatos(2) = PI * (Radio^2)
   
    DatosCirculo = mDatos
   
End Function

Y el resultado:

Como ves, no puede ser más sencillo.

¡Feliz programación!

Comentarios (0)


Alcance Libre
http://www.alcancelibre.org/article.php/20110804085214200