Frage

In einer VBA, die an eine Excel 2003 -Tabelle beigefügt ist, muss ich einige Objekte verwenden, die eine Weile dauern, bis ich instanziiert ist - also möchte ich nur das "Set" -Ding einmal machen ...

Es ist einfacher, dass der Code der Show zeigt, als eine Erklärung zu schreiben!

' Declare the expensive object as global to this sheet
Dim myObj As SomeBigExpensiveObject

Private Sub CommandButtonDoIt_Click()

   ' Make sure we've got a ref to the object
   If IsEmpty(myObj) Then  ' this doesn't work!
      Set myObj = New SomeBigExpensiveObject
   End If

   ' ... etc

End Sub

Wie kann ich überprüfen, ob MyObj bereits festgelegt wurde?

Ich habe Isnull (myobj) und isempty (myobj) ausprobiert - beide überspringen das "Set", unabhängig vom Zustand von Myobj. Ich kann nicht

if myObj = Nil then

oder

if myObj = Empty then

oder

if myObj = Nothing then

Irgendwelche Ideen?

Sal

War es hilfreich?

Lösung

Das sollte funktionieren:

    If myObj IS Nothing Then

(Beachten Sie das "IS") Wenn dies nicht funktioniert, muss es eine asynchrone Intialisierung geben, die speziell von dieser Klasse implementiert wird, da die COM -init -Aufrufe standardmäßig synchron sind. Sie müssen also den DOC nach dem Entwickler überprüfen oder mit der großen Klasse über eine Eigenschaft oder eine Synchronomethode sprechen, auf die Sie warten können.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top