Quel tipo di eccezione viene restituita quando non è stato invocato il metodo New dell'oggetto.
in poche parole se viene definito un oggetto ma non viene inizializzatto è come se ti compri una macchina e pretendi che cammini senza accenderla.
non so che tipo di oggetto sia Data2, se lo definisci nel codice, ti consiglio di mettere prima del MoveFirst un
codice:
Data2.Recordset = New qualcosa
se si tratta di un controllo winform allora è probabile che venga generato quell'errore perchè forse viene creata l'istanza solo dopo il caricamento del form (mi sembra strano perché normalmente lo fa prima di scatenare l'evento Load).