La diferencia entre una función y un sub en Excel VBA es que una función puede devolver un valor, mientras que un sub no puede. Funciones y subs vuelven muy útil a medida que aumenta el tamaño del programa.

Función

Si desea que Excel VBA para realizar una tarea que devuelve un resultado, puede utilizar una función. Colocar una función en un módulo (En el Editor de Visual Basic, haga clic en Insertar, Módulo). Por ejemplo, la función con el nombre de Área.

Function Area(x As Double, y As Double) As Double

Area = x  y

End Function

Explicación: Esta función tiene dos argumentos (de tipo doble) y un tipo de retorno (la parte que sigue Como también de tipo doble). Se puede utilizar el nombre de la función (Zona) en su código para indicar el resultado que desea devolver (en este caso x Y).

Ahora puede hacer referencia a esta función (en otras palabras llaman a la función) de otra parte de su código utilizando simplemente el nombre de la función y dando un valor para cada argumento.

Coloque un enlace: / VBA crear a un macro-#-botón de comando [botón de comando] en su hoja de trabajo y añadir las siguientes líneas de código:

Dim z As Double

z = Area(3, 5) + 2

MsgBox z

Explicación: La función devuelve un valor lo que tiene que ‘captura’ este valor en el código. Se puede utilizar otra variable (z) para esto. A continuación, se puede añadir otro valor de esta variable (si lo desea). Por último, mostrar el valor utilizando un MsgBox.

Como resultado al hacer clic en el botón de comando en la hoja:

Excel VBA Function Result

Sub

Si desea que Excel VBA para realizar algunas acciones, se puede utilizar un sub. Colocar una sub en un módulo (En el Editor de Visual Basic, haga clic en Insertar, Módulo).

Por ejemplo, el sub con el nombre de Área.

Sub Area(x As Double, y As Double)

MsgBox x * y

End Sub

Explicación: Este subsistema tiene dos argumentos (de tipo doble). No tiene un tipo de retorno! Se puede hacer referencia a este sub (ir al sub) de otra parte de su código utilizando simplemente el nombre de la subregión y dando un valor para cada argumento.

Coloque un enlace: / VBA crear a un macro-#-botón de comando [botón de comando] en su hoja de trabajo y añadir la siguiente línea de código:

Area 3, 5

Como resultado al hacer clic en el botón de comando en la hoja:

Excel VBA Sub Result

Se puede ver la diferencia entre la función y el sub? La función devuelve el valor 15. Añadimos el valor 2 a este resultado y se muestra el resultado final. Cuando llamamos a la sub no teníamos más control sobre el resultado (15) porque un sub no puede devolver un valor!