¿Cuál es la vida útil de una variable global en Excel VBA?
Tengo un libro que declara una variable global destinada a contener un objeto COM.
Global obj As Object
Lo inicializo en el evento Workbook_Open así:
Set obj = CreateObject("ComObject.ComObject");
Puedo ver que está creado y en ese momento puedo hacerle algunas llamadas COM.
En mi hoja tengo un montón de celdas que se ven así:
=Module.CallToComObject(....)
Dentro del Módulo tengo una función
Function CallToComObject(...)
If obj Is Nothing Then
CallToComObject= 0
Else
Dim result As Double
result = obj.GetCalculatedValue(...)
CallToComObject= result
End If
End Function
Puedo ver que funcionan por un tiempo, pero después de actualizar algunas hojas, el objeto obj ya no está inicializado, es decir, está configurado en Nada.
¿Alguien puede explicar qué debería buscar que pueda causar esto?
Cualquiera de estos restablecerá las variables globales:
- Usando "Fin"
- Un error de tiempo de ejecución no controlado
- Código de edición
- Cerrar el libro de trabajo que contiene el proyecto VB
Sin embargo, esa no es necesariamente una lista exhaustiva...
Sugeriría un quinto punto además de los cuatro de Tim anteriores: recorrer el código (depuración) y detenerse antes de llegar al final. Posiblemente esto podría reemplazar el punto número 3, ya que la edición de código no parece hacer que las variables globales pierdan sus valores.