Escribí el siguiente código:
Function find_results_idle()
Public iRaw As Integer
Public iColumn As Integer
iRaw = 1
iColumn = 1
Y recibo el mensaje de error:
"atributo inválido en Sub o Función"
¿Sabes lo que hice mal?
Traté de usar en Global
lugar de Public
, pero tuve el mismo problema.
Traté de declarar la función en sí misma como 'Public, pero eso tampoco sirvió de nada.
¿Qué debo hacer para crear la variable global?
excel
vba
scope
global-variables
Nimrod
fuente
fuente
Function
/Sub
, no solo afuera: "Las variables a nivel de módulo se pueden declarar con una declaración Dim o Private en la parte superior del módulo sobre la definición del primer procedimiento". (del alcance de las variables en Visual Basic para aplicaciones )Esta es una pregunta sobre el alcance .
Si solo desea que las variables duren la vida útil de la función, use
Dim
(abreviatura de Dimension ) dentro de la función o sub para declarar las variables:Una variable global (como señaló SLaks) se declara fuera de la función utilizando la
Public
palabra clave. 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.También puede tener variables que solo sean accesibles dentro de un módulo (o clase) particular al declararlas con la
Private
palabra clave.Si está creando una aplicación grande y siente la necesidad de usar variables globales, recomendaría crear un módulo separado solo para sus variables globales. Esto debería ayudarlo a realizar un seguimiento de ellos en un solo lugar.
fuente
Para usar variables globales, inserte un nuevo módulo desde la interfaz de usuario del proyecto VBA y declare las variables usando
Global
fuente
Public
vs conGlobal
palabra clave?Public
yGlobal
son casi idénticos en su función ...Global
proviene de versiones anteriores de VB"La pregunta es realmente sobre el alcance, como lo expresó el otro chico.
En resumen, considere este "módulo":
Puede consultar esta referencia de MSDN para obtener más información sobre la declaración de variables y esta otra Pregunta de desbordamiento de pila para obtener más información sobre cómo las variables quedan fuera de alcance.
Otras dos cosas rápidas:
fuente
Si esta función está en un módulo / clase, podría escribirlos fuera de la función, así es
Global Scope
. Global Scope significa que otra función puede acceder a la variable en el mismo módulo / clase (si usadim
como declaración de declaración, usepublic
si desea que todas las funciones puedan acceder a las variables en todos los módulos):fuente
Crear un número entero público en la Declaración general.
Luego, en su función, puede aumentar su valor cada vez. Ver ejemplo (función para guardar archivos adjuntos de un correo electrónico como CSV).
fuente
Una buena manera de crear variables públicas / globales es tratar el formulario como un objeto de clase y declarar propiedades y usar Public Property Get [variable] para acceder a la propiedad / método. También es posible que deba hacer referencia o pasar una referencia al módulo de formulario instanciado. Obtendrá errores si llama métodos a formularios / informes que están cerrados.
Ejemplo: pasar Me.Form.Module.Parent en sub / function no dentro del formulario.
Entonces, en el otro módulo, podrá acceder a:
Si usa el enlace tardío como siempre, siempre verifico los valores nulos y los objetos que son nada antes de intentar realizar cualquier procesamiento.
fuente
También puedes usar -
Su probado en la oficina 2010
fuente