Si sólo te interesa saber si la consulta devuelve registros o no puedes utilizar un dlookup. Así no tienes que declarar ni crear recordsets sobre la consulta.
Supongamos que tu consulta tiene un campo que se llama [Id]. Entonces, en el evento "Al hacer clic" que te abriera una consulta llamada "C1", por ejemplo, escribirías:
...
Private Sub Comando0_Click()
Dim hayDatos As Variant
hayDatos = DLookup("Id", "C1")
If IsNull(hayDatos) Then
MsgBox "No devuelvo registros"
Else
docmd.openquery "C1"
End If
End Sub
...
La otra opción es crear un recordset, pero en este caso no necesitarías el EOF. Simplemente le tienes que decir que te cuente los registros que encuentre.
La mecánica sería la siguiente. Te lo comento en un código:
...
Private sub...
Dim rst as dao.recordset 'Declaramos el recordset
Set rst=currentdb.openrecordset("C1") 'Abrimos el recordset sobre la consulta
If rst.recordcount=0 'Si el número de registros devueltos es cero...
msgbox "No devuelvo registros"
Else 'En caso contrario abro la consulta
docmd.openquery "C1"
End if
'Limpio y libero memoria
rst.close
Set rst=nothing
End sub
...
Si utilizas versiones antiguas de Access antes debes hacer un recorrido de registros. Yo te recomendaría que lo utilizaras sólo si no te funciona el código anterior. El nuevo código sería:
...
Dim rst as dao.recordset 'Declaramos el recordset
Set rst=currentdb.openrecordset("C1") 'Abrimos el recordset sobre la consulta
'Recorremos los registros del recordset para ir contándolos
rst.movefirst
rst.movelast
If rst.recordcount=0 'Si el número de registros devueltos es cero...
msgbox "No devuelvo registros"
Else 'En caso contrario abro la consulta
docmd.openquery "C1"
End if
'Limpio y libero memoria
rst.close
Set rst=nothing
End sub
...
Finalmente, el uso del EOF se produce, por ejemplo, cuando vas recorriendo uno a uno los registros, empezando desde el primero.
Suponiendo que tu consulta sí devuelve registros y que tiene el campo [Id] podrías obtener una lista de id's en la ventana inmediato así:
...
Private sub...
Dim rst as dao.recordset 'Declaramos el recordset
Set rst=currentdb.openrecordset("C1") 'Abrimos el recordset sobre la consulta
If rst.recordcount=0 'Si el número de registros devueltos es cero...
msgbox "No devuelvo registros"
Else 'En caso contrario ...
rst.movefirst 'Me voy al primer registro
do until rst.EOF 'Hago este proceso registro a registro hasta llegar al último
debug.print rst.Fields("Id").value 'Escribo en la ventana inmediato el valor del id
rst.movenext 'Me voy al siguiente registro
Loop 'Repito el proceso de escritura del id
End if
'Limpio y libero memoria
rst.close
Set rst=nothing
End sub
...
Espero que ahora lo tengas un poco más claro.