Ésta es una pregunta acerca scope.
Si sólo desea las variables para durar toda la vida útil de la función, use Dim
(abreviatura de Dimensión) dentro de la función o sub declarar las variables:
Function AddSomeNumbers() As Integer
Dim intA As Integer
Dim intB As Integer
intA = 2
intB = 3
AddSomeNumbers = intA + intB
End Function
'intA and intB are no longer available since the function ended
Un variable global (como señaló SLaks) se declara fuera de la función utilizando la palabra clave Public
. Esta variable estará disponible durante la vida de su aplicación en ejecución. En el caso de Excel, esto significa que las variables estarán disponibles siempre que ese libro de Excel en particular esté abierto.
Public intA As Integer
Private intB As Integer
Function AddSomeNumbers() As Integer
intA = 2
intB = 3
AddSomeNumbers = intA + intB
End Function
'intA and intB are still both available. However, because intA is public, '
'it can also be referenced from code in other modules. Because intB is private,'
'it will be hidden from other modules.
Puede también tener variables que sólo son accesibles dentro de un módulo en particular (o clase) declarándolos con la palabra clave Private
.
Si está creando una aplicación grande y siente la necesidad de usar variables globales, le recomendaría crear un módulo separado solo para sus variables globales. Esto debería ayudarlo a hacer un seguimiento de ellos en un solo lugar.
+1 Todavía útil 7 años después. Pero, ¿hay algún matiz adicional con respecto a las variables de objeto frente a las variables de datos? Me encontré con un problema relacionado con el ámbito de las variables de objeto que provocó una nueva pregunta. Muy apreciado si tuviera tiempo para echar un vistazo. https://stackoverflow.com/q/46058096/5457466 – Egalth