Dilettante mentioned disconnected ADO recordsets, and that's a good idea. Here's a CodeBank link where I've attempted to simplify these.

Basically, you'd just "define" your recordset, and then use something like the following to sort it:

Code:
rs.Sort="SortField1, SortField2, SortField3, ..."
Easier and faster than what you'd probably do with a UDT. It's just a bit more work to set it up, but again, I've tried to simplify that part.

If you don't need these UDTs for API calls, then a disconnected recordset is probably a better alternative, especially if you'll be focusing a lot on sorting.