2012-06-28 18 views
12

Qual è l'operatore o la funzione per verificare se due variabili dello stesso tipo di oggetto personalizzato si riferiscono allo stesso oggetto? Ho provatoVBA: come verificare l'uguaglianza dell'oggetto (se due variabili fanno riferimento allo stesso oggetto)

If myObject = yourObject Then 

Ma ottenere un errore di runtime 438 oggetto non supporta questa proprietà o metodo. Suppongo che mi stia dicendo di scavalcare l'operatore '=' per verificare se tutti i campi dei due oggetti hanno lo stesso valore. Ma quello che voglio è testare se sono lo stesso oggetto.

risposta

26

Sto indovinando che è mi dice di ignorare il '=' operatore per verificare se tutti i campi dei due oggetti hanno lo stesso valore.

No, indica che gli oggetti non hanno una proprietà di default che sarebbe stata chiamata altrimenti e i risultati restituiti confrontati.

uguaglianza si fa riferimento a test con Is

If myObject Is yourObject Then 
+0

Grazie GSerg, esattamente quello che mi serviva – Swiftslide

+0

@GSerg: Che non sembra di lavorare per due oggetti gamma. Ad esempio, Set r1 = Range ("A1") e Set r2 = Range ("A1"), quindi Debug.Print r1 Is r2 restituisce False. –

+7

@ExcelDevelopers 'Is' verifica l'uguaglianza referenziale, non l'uguaglianza secondo una logica di livello superiore. I due oggetti 'Range' sono istanze diverse, quindi' Is' restituisce correttamente false. Il fatto che si riferiscano allo stesso intervallo non è rilevante - 'Is' non può e non sa di questa connessione logica aggiuntiva, specifica solo per' Range's. Se vuoi controllare se due 'Range's si riferiscono allo stesso intervallo di fogli, devi confrontare i loro' Address'es o vedere se 'Application.Intersect (r1, r2)' fornisce l'intervallo della stessa dimensione di entrambi 'r1' e' r2'. – GSerg

Problemi correlati