Excel Avanzado

Macros, Vba en Excel y muchos ejemplos de nuestro Curso de Excel Avanzado

Excel Avanzado

¿Cómo crear una función en VBA?

| 7 comentarios

Una función es un código que de manera opcional recibe como entrada un valor o grupo de valores y mediante un proceso regresa un valor de salida.

Excel, dentro de la ficha Programador, permite elaborar funciones propias llamadas UDF. La llamada de estas funciones se realiza de la misma manera que las funciones que ya se encuentran en el Excel, es decir, se escribe el nombre de la función y los valores que serán tomados como parámetros.  Asimismo, la función puede ser llamada en el lugar donde se requiera el valor de salida.

Ejemplo:

La primera línea del código para crear la función contiene la palabra Function seguida del nombre de la función y los paréntesis en los que se colocó el parámetro que requiere la función.

En la última línea se cierra el código con End Function.

FIG1

(Para mayor visualización de  la imagen, hacer click en la misma)

Entre la primera y última línea se escribe el proceso que nos permitirá obtener un valor de retorno. En este caso, el código escrito permite obtener el término enésimo de la serie Fibonacci: 0,1,1,2,3,5,8...

Cada término de la serie se origina al sumar los 2 términos anteriores y se empieza la serie con los números 0 y 1 almacenados en las variables resultadoant y resultado respectivamente. De esta manera, el tercer término se obtiene de la suma de 0+1 y se almacena en la variable resultadonuevo. Con una lógica For… Next se logra que se repita la suma hasta llegar al elemento deseado. (Se comienza desde el tercer término porque los 2 anteriores son valores almacenados previamente)

FIG2

(Para mayor visualización de  la imagen, hacer click en la misma)

Por otro lado, para reportar el valor de la serie Fibonacci, se colocó una lógica If…Else…End If que muestre el valor para el primer término que es igual al valor inicial, el cual se almacenó en la variable resultadoant (0) y para los demás valores, es igual a la variable resultado.

FIG3

(Para mayor visualización de  la imagen, hacer click en la misma)

En el presente ejemplo, se crearon 2 UserForms:

El primero se muestra al abrir el archivo de Excel y sirve para darle la bienvenida al usuario al programa.  Además, cuenta con un botón COMENZAR para iniciar con el programa.

FIG5

El segundo se muestra al dar click sobre el botón de la Hoja1 : Serie Fibonacci. En este UserForm, se solicita el número del término de la serie Fibonacci que se requiere. Al dar click en el botón Calcular, el programa emplea la Función creada para dar como resultado el valor en una caja de texto y almacena la consulta en la Hoja1. Asimismo, cuenta con un botón Cerrar para acabar con las consultas.

FIG4

(Para mayor visualización de  la imagen, hacer click en la misma)

Además, muestra un mensaje de Error si no se ingresa un valor válido.

FIG6

En el siguiente archivo se presenta el código para obtener los valores de la serie.

Cómo crear una función en VBA

Artículo escrito por: Piero Arbulú Zumaeta

7 comentarios

  1. Hola, tengo una duda con estas funciones. Es posible generar ayudas como las que genera las funciones normales de excel, por ejemplo explicar que parametros debe tener, tal vez me explique mejor con un ejemplo. Cuando uno escribe =redondear( aparece un mensaje que dice REDONDEAR(numero;núm_decimales) eso se podria hacer en estas funciones definidas por el usuario?. Un saludo desde bogota y muchas gracias

    • Buen día

      Quisiera saber si ya te respondieron esta pregunta, o tienes idea de cómo hacerle. Es que estoy en la misma situación y por mucho que busco no encuentro el cómo lograrlo.
      Muchas gracias por la atención y quedo atento.

      Cordial Saludo

      • Hola! Como una solución alternativa, se me ocurre que al momento de configurar las UDF en el programador, le llames a cada argumento por un nombre de ayuda que consideres adecuado y/o a lo mejor puedes generar un botón que te arroje mediante un MsgBox una ayuda de memoria de aquellas funciones específicas que hayas definido en el libro que estás trabajando.

        Saludos!

        • Yo hace algún tiempo descubrí una opción simple de hacerlo. A continuación la describa:

          - El primer paso es definir tu función (lo cual ya realizaste)
          - El segundo paso es presionar F2 lo cual te direccionará a la ventana de examinador de objetos. en esta ventana ve al ámbito en el cual definiste tu función y búscala. Luego dale click derecho y ve a propiedades. Se mostrará la ventana opciones de miembro
          - El tercer paso es ingresar la descripción de tu función y lo que hace en el campo de descripción.

          Ahora cada vez que insertes la función desde la ficha "Insertar Función" la descripción aparecerá en el cuadro de argumentos.

          También existe otra forma para hacerlo, pero es un poco más complicada y puedes indagar acerca de ella, es con el método de Application.MacroOptions

          Espero te sirva.

          Saludos.

  2. Retiro mi comentario.

    Estaba bastante visible. Sólo tenía que seguir leyendo un poco más adelante.

    Gracias

  3. alguien me podria ayudar a realizar un programa donde pueda yo ingresar los fletes de mi empresa y me arroje un reporte semanal, tendria los campos de num de nota, cliente, fecha, chofer, vehiculo. se los agradeceria

  4. Buen dia, el presente es para preguntar como puedo hacer para que los datos ingresados en mi planilla userform no se graben en la ultima fila si no que inserte en la primera fila y que la informacion que estaba antes se desplace hacia abajo. Sin modificar mi onsercion de codigo nuevo o repetido.

Deja una respuesta

Los campos requeridos estan marcados con *.