Podrias usar la Propiead State del Objeto Recordset u Objeto Connection para saber si está haberto el Recordset o la connexión
Para un objeto Recordset que ejecuta un método asíncrono, describe si el estado actual del objeto es conectando, ejecutando u obteniendo datos
Ejemplo
Dim cnn As New ADODB.Connection
Dim rs As New ADODB.Recordset
'Obviamente para hacer uso de sus propiedades, debe estar instanciado
cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\Archivos de programa\Microsoft Visual Studio\VB98\NWIND.MDB;Persist Security Info=False"
' rs.Open "select * from clientes", cnn
If rs.State = adStateClosed Then
Debug.Print "está vacio"
End If
Constante Descripción
adStateClosed Valor predeterminado. Indica que el objeto está cerrado.
adStateOpen Indica que el objeto está abierto.
adStateConnecting Indica que el objeto Recordset se está conectando.
adStateExecuting Indica que el objeto Recordset está ejecutando un comando.
adStateFetching Indica que se está obteniendo el conjunto de filas del objeto Recordset.