8 de noviembre de 2008

Usar funciones EXCEL en nuestras propias funciones (UDF)

Aunque Visual Basic para Aplicaciones (VBA) incluye numerosas funciones equivalentes a las funciones integradas para hojas de cálculo de Excel, alguna vez nos puede ocurrir que prefiramos usar una determinada función estándar de Excel dentro de la función que estamos desarrollando en lugar de programar nosotros código específico para ello.

Se puede llamar a una función integrada de la hoja de cálculo de Excel directamente desde un código Visual Basic para Aplicaciones (VBA); con el objeto WorksheetFunction (válido a partir de Excel 97).

Cuándo desarrollemos funciones en VBA que deban usar funciones estándar de Excel, deberemos tener en cuenta que el nombre de la función que deberemos usar es el nombre de la función en inglés y no la localización específica para nuestro país. En este
enlace encontrarás una equivalencia del nombre de las funciones estándar en inglés con las localizaciones específicas para España, Francia, Alemania, Italia, Portugal (y Brasil), Holanda, Finlandia y Suiza.

En el siguiente ejemplo, usaremos la función PAGO (de la localización de España) y que equivale a la función PMT de Excel en inglés.


El código de la función es el siguiente:

Public Function CuotaPrestamo(Importe As Double, Interes As Double, Meses As Integer) As Double

' Usamos la función PMT de Excel en inglés que equivale
' a la función PAGO de EXCEL localizada para España

CuotaPrestamo = WorksheetFunction.Pmt(Interes / 12, Meses, Importe) * -1

End Function

Para llamar a esta función bastará con que nos coloquemos en una celda y la llamemos pasando los parámetros específicos: el importe del préstamo, el tipo de interés y el número de meses en el que deseamos amortizar el préstamo.

=CuotaPrestamo(150000,4,75%,360)

El resultado de esta función nos devolverá la cuota a pagar de nuestro préstamo.

No hay comentarios: