Excel dispone de una librería de formulas con su propia clasificación interna, lo cual permite una rápida y efectiva búsqueda a la hora de detectar la formula que estamos necesitando. Sin embargo hay veces que necesitamos hacer algún calculo simple que no figura en la biblioteca original. Es en estas situaciones que las funciones definidas por el usuario cobran relevante importancia dado que es la manera que tenemos de obtener nuestras formulas a medida.
VBA nos permite crear formulas y disponer de ellas en la biblioteca, solo tenemos que buscarla en el menú principal: Insertar --> Formulas, en la categoría Definidas por el usuario.
Veamos un ejemplo simple para poder crear una UDF:
Creamos un Modulo en el Editor de VBA, y definimos la Función y sus argumentos. En este caso esta seria la sintaxis:
Function VolCilindro(Radio, Alto)
Pi = 3.14159
VolCilindro = Pi * Radio * Radio * Alto
End Function
Luego en una de las hojas del libro donde se creo la función, nos situamos en una celda y escribimos =VolCilindro o directamente desde el menú: Insertar Formulas.
Las formulas de Excel suelen tener una descripción de la operación, ¿como se hace para grabar la descripción de las UDF?
Para cualquier caso: si ya esta creada la macro función o no, desde el menú principal: Herramientas, Macro, Macros. Se abre una ventana, colocamos el nombre de la macro y se habilita el botón "Opciones". En el cuadro de "Descripción" describa la formula creada:
(Para una mayor visualización de la imagen, hacer click en la misma)
Cuando usamos la formula podemos ver la descripción y los argumentos que utiliza según nuestra definición:
(Para una mayor visualización de la imagen, hacer click en la misma)
Elaborado por: Ana Di Nezio
03/02/2013 a las 11:35 pm
Interesante función de la forma, aunque tal vez seria bueno que se restinga los valores a las mismas unidades, o que aparezca, al ingresar la formula el argumento a que corresponde.
23/05/2013 a las 9:16 pm
Toda la razon Jesus, que pasaria si el radio y la altura se encuentran en unidades diferentes? podria ser necesario alguna funcion que se valide que se encuentren en la misma unidad de medicion.
Donde unidad_medida_de_radio y unidad_medida_de_alto vendrian a ser celdas donde estarian contenidas la misma medida ( Si es metros colocar m, pulgadas colocar in, etc )
Function VolCilindro(Radio, Alto, unidad_medida_de_radio, unidad_medida_de_alto)
Pi = 3.14159
If unidad_medida_de_radio = unidad_medida_de_alto then
VolCilindro = Pi * Radio * Radio * Alto
End Function
26/05/2013 a las 9:53 pm
Se puede utilizar la declaración de la constante PI de la siguiente manera:
Global Const PI = 3.1415926535897932384626433832795
Al inicio de los procedimientos.
12/08/2015 a las 10:15 pm
Creo que esta UDF es muy útil para cálculos más rápidos. Asimismo adjunto un código en donde se puede sumar el volumen de un cilindro y una esfera con un mismo radio, en donde arg1 es el radio y arg2 es la altura en centímetros.
Function Volumen(arg1, arg2)
resultado = (4 * 3.1416 * arg1 ^ 3 / 3) + (3.1416 * arg1 ^ 2 * arg2)
Volumen = resultado
End Function