Here is one option for item 1 http://allenbrowne.com/ser-50.html
For item 2, I just tried to do something like what you describe. I selected records, then clicked a button. The selection was retained only if I used shift and click to select records, dragging mouse down the record selectors didn't work. Code can then loop through the selection and do something with them. Something like this:
Code:
Private Sub StatusEdit_Click()
Dim N As Integer
Dim intHeight As Integer 'stores value for number of records selected
Dim intTop As Integer 'stores value for position of the first selected record in recordset
intHeight = Me.SelHeight
intTop = Me.SelTop
With Me.RecordsetClone
If intHeight < 1 Then
MsgBox "No records have been selected."""
Else
For N = 1 To intHeight
.AbsolutePosition = intTop - 1 'AbsolutePosition property is 0 based counter so must -1 to get position within the recordset
.MoveFirst
While Not .EOF
'do something with the record, like:
.Status="something"
.MoveNext
Wend
Next
End If
End With
End Sub