Basato sul tuo commento Issun:
Grazie per la spiegazione. Nel mio caso, l'oggetto viene dichiarato e creato prima della condizione If. Quindi, come utilizzare la condizione Se per verificare l'assenza di variabili <>? In altre parole, non voglio eseguire My_Object.Compute se My_Object ha < Nessun Variabili>
è necessario controllare una delle proprietà dell'oggetto. Senza dirci quale sia l'oggetto, non possiamo aiutarti.
Ho testato diversi oggetti comuni e ho rilevato che un'istanza di Collection
senza elementi aggiunti mostra <No Variables>
nella finestra di controllo. Se il vostro oggetto è davvero una collezione, è possibile controllare per la condizione <No Variables>
utilizzando la proprietà .Count
:
Sub TestObj()
Dim Obj As Object
Set Obj = New Collection
If Obj Is Nothing Then
Debug.Print "Object not instantiated"
Else
If Obj.Count = 0 Then
Debug.Print "<No Variables> (ie, no items added to the collection)"
Else
Debug.Print "Object instantiated and at least one item added"
End If
End If
End Sub
E 'anche interessante notare che se si dichiara un oggetto As New
allora il controllo Is Nothing
diventa inutile. Il motivo è che quando si dichiara un oggetto As New
viene creato automaticamente quando viene chiamato per la prima volta, anche se la prima volta che lo si chiama è per vedere se esiste!
Dim MyObject As New Collection
If MyObject Is Nothing Then ' <--- This check always returns False
Questa non sembra essere la causa del tuo problema specifico. Ma, dal momento che altri potrebbero trovare questa domanda attraverso una ricerca su Google, ho voluto includerla perché è un errore principiante comune.
Come si 'My_Object' dichiarata? – GSerg
Puoi chiarire cosa intendi per "nessuna variabile"?Se My_Object è Nothing, sicuramente significa che non punta a un oggetto. Inoltre, qual è la definizione di tipo di My_Object? –
"Voglio che My_Object.Compute sia eseguito solo quando My_Object esiste." Il tuo desiderio è qui concesso. (Significa, c'è qualche scenario in cui questo * non * dovrebbe essere il caso ?!) –