Recordsets to my knowledge can be sent like any other parameter. I use ADO and have used it numberous times.

Example below.

Public Sub NextRecord(records As ADODB.Recordset)
If lb_recordsLoaded Then
If records.EOF Then
MsgBox "Already at last record"
Else
records.MoveNext
Call FillCustomerDetails(records)
End If
Else
MsgBox "No Records to Populate Form"
End If
End Sub