¿Cuál es la vida útil de una variable global en Excel VBA?

Resuelto chollida asked hace 13 años • 2 respuestas

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?

chollida avatar Aug 12 '11 20:08 chollida
Aceptado

Cualquiera de estos restablecerá las variables globales:

  1. Usando "Fin"
  2. Un error de tiempo de ejecución no controlado
  3. Código de edición
  4. Cerrar el libro de trabajo que contiene el proyecto VB

Sin embargo, esa no es necesariamente una lista exhaustiva...

Tim Williams avatar Aug 12 '2011 17:08 Tim Williams

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.

Excel Developers avatar Feb 21 '2013 13:02 Excel Developers