VBA – Devolver un Valor desde un Subprocedimiento

Written by

Mel Jenkins

Reviewed by

Steve Rynearson

Translated by

Dennis Madrid

Last updated on abril 4, 2022

Este tutorial le enseñará cómo devolver un valor desde un subprocedimiento en VBA.

Un subprocedimiento no está diseñado para devolver un valor – para eso se utiliza un procedimiento de función. Sin embargo, puede haber un momento en el que esté ejecutando algún código en un subprocedimiento en el que necesite obtener un valor de ese subprocedimiento. La forma de hacerlo es utilizar Variables de Módulo o Globales o utilizar un Subprocedimiento para rellenar una hoja de Excel.

Uso de variables para devolver un valor

Puede declarar variables a nivel de módulo. Al hacerlo, esas variables pueden utilizarse en cualquier parte del módulo y las variables conservan sus valores. Para declarar una variable a nivel de módulo, simplemente declare la variable en la parte superior de su módulo de código:

Option Explicit
Dim dblQty As Double
 
Sub PruebaA()
'llamar al Subprocedimiento "PruebaB"
   Call PruebaB
'mostrar el valor de la variable en la ventana inmediato
   Debug.Print dblQty
End Sub
Sub PruebaB()
'Llenar la variable
   dblQty = 900
End Sub

Para juntar todo esto, ejecutaríamos el TestA, que a su vez llamaría al TestB y nos daría el valor de 900 en la ventana inmediata.

Devolver valor desde subprocedimiento

Esto sólo funcionaría dentro del módulo, ya que la variable ha sido declarada utilizando la sentencia Dim a nivel de módulo.

Variable global

Puede declarar la variable a nivel global para utilizarla en todos los módulos de su proyecto.

Devolver valor desde subprocedimiento public

Uso de un Subprocedimiento para rellenar una hoja de Excel

Otra forma de referenciar valores calculados desde un Sub Procedimiento, es simplemente escribir los datos en una Hoja de Excel y luego referenciar esos datos en otro procedimiento.

Sub LlenarRango()
   Range("A1") = "Producto"
   Range("B1") = "Cantidad"
   Range("C1") = "Costo"
End Sub

Luego puedes referenciar esos valores en otro procedimiento haciendo referencia a los valores de las celdas:

Sub RecuperarRango()
   Dim Producto As String, Cantidad As Long, Costo As Double
 
   Producto = Range("A1")
   Cantidad = Range("B1")
   Costo = Range("C1")
End Sub
vba-free-addin

Complemento de Ejemplos de Código de VBA

Acceda fácilmente a todos los ejemplos de código que se encuentran en nuestro sitio.

Simplemente navegue al menú, haga clic y el código se insertará directamente en su módulo. Complemento .xlam.

(¡No se requiere instalación!)

Descarga gratuita

Return to VBA Code Examples