VBA: Crea tus propias funciones o formulas.

Mediante VBA puedes crear tus propias funciones para realizar cálculos complejos (Si no estás familiarizado con VBA puedes leer este articulo antes de continuar) En esta ocasión te  mostraremos como hacer una función que calcule el impuesto de venta sobre cualquier celda a la que se aplique.

Lo primero que tienes que hacer es entrar al editor de VBA (Alt+F11), luego en nuestro libro hacemos clic derecho sobre Microsoft Excel Objetos, luego seleccionamos Insertar y hacemos clic sobre Modulo, esto nos creara una sección en la que podemos agregar funciones y macros.

Pasos para agregar un modulo de codigo a VBA

Ahora hacemos doble clic sobre la nueva sección Módulo1 y agregamos este código:

Function CalculaImpuesto(Valor As Double) As Double
   Dim calculo As Double
   calculo = Valor * 0.13
   CalculaImpuesto = calculo
End Function
Ventana de codigo para agregar la funcion

Ahora ya tenemos la función disponible para nuestra hoja de cálculo.

Como utilizar la función en nuestra hoja de cálculo.

La función que hemos creado está ahora disponible como todas las demás funciones de Excel, para usarla ingresamos esto en cualquier celda

=CalculaImpuesto(A3)

Donde A3 puede ser cualquier valor numérico o celda que contenga algún número.

Como usar la función personalizada

Explicación de la función.

Function CalculaImpuesto(Valor As Double) As Double
   Dim calculo As Double
   calculo = Valor * 0.13
   CalculaImpuesto = calculo
End Function

Todas las funciones que creemos se deben colocar entre las secciones “Function …. End Function“, para este caso CalculaImpuesto, es el nombre de nuestra función y será el nombre que ocupemos para llamarla en nuestra hoja de cálculo.

La sección  “(Valor As Double)” indica que la función recibe un parámetro (o valor) de tipo Double y con nombre Valor (Double es un tipo de datos numérico e indica que contendrá un número posiblemente con decimales), la parte As Double, indica que el resultado de la fórmula también será de tipo Double.

Dim calculo As Double, declara una variable llamada calculo y que será de tipo double, la línea calculo = Valor * 0.13, realiza el calculo de la fórmula multiplicando por 0.13 el valor que se recibe como parámetro y lo almacena en la variable Calculo.

Finalmente en la línea CalculaImpuesto = calculo, indica que la función regresa el valor almacenado en la variable calculo (esto es el resultado Valor * 0.13).

Para regresar un valor en la fórmula siempre debemos hacerlo de esta forma:

NombreFuncion = Valor_a_devolver

Nota: Cuando guardes el archivo deberás hacerlo habilitado para macros con extensión .xlsm si tienes Excel en versiones 2007 o superiores.

[Actualización]: Si además deseas agregar las descripciones a tus funciones, te lo explicamos fácil en este otro articulo.

31 comentarios en «VBA: Crea tus propias funciones o formulas.»

  1. En caso de crear una funcion que divida .. en caso de que el denominador sea cero… devuelva el error 532, es decir: #DIV/0!.. pero no el comentario sino el error… como seria??

    Responder
  2. Me gustaría saber cómo se puede guardar una función o macro completamente en excel, y no solo en el libro, es decir, crearla y que se pueda usar en cualquier libro que abra o cree nuevo, sin tener que realizar la función nuevamente en cada uno.

    Responder
  3. el programa es bueno solo quiero saber si este programa me sirve para acceder a información de algo, por ejemplo si puedo crear una función que me permita acceder a la información de mi municipio o localidad con solo dar un clic y escribir su nombre (el del municipio)

    Responder
  4. Hola, Primero que todo te quiero dar las gracias por tu post.
    Mi pregunta es cómo puedo hacer para que no se me borre la función que creo, ya que cada vez que apago el computador la función desaparece, ni siquiera está disponible ni en el archivo ni en la hoja de cálculo donde la cree. Gracias de antemano.

    Responder
  5. Olle disculpa y si quiero hacer una formula donde me pida dos datos o 2 celdas
    esta la formula escrita ((dato1)*100)/dato2 como seria el codigo o como exclamo que necesito dos datos?

    Responder
    • Hola podrias tener algo como:

      Function tuFuncion(dato1 As Double, datos2 as Double) As Double
      tuFuncion = dato1 * 100 / dato2
      End Function

      Como tienes solo multiplicaciones y divisiones no necesitas los paréntesis (el orden de los factores no altera el producto)

      Responder

Deja un comentario