I use a frame/tgl button combination myself having a default toggle but selected and two additional tog buttons for sorting.
Here's the code:
Select Case fraProcess
Forms!frmPurchase!subformfrmPurchasesubfrmPaidInvoices.Form.RecordSource = "qryfrmPurchasesubfrmPaidInvoices"
Forms!frmPurchase!subformfrmPurchasesubfrmPaidInvoices.Form.RecordSource = "qryfrmPurchasesubfrmPaidInvoices_SortDate"
Case 3 '8/22/05
Forms!frmPurchase!subformfrmPurchasesubfrmPaidInvoices.Form.RecordSource = "qryfrmPurchasesubfrmPaidInvoices_SortCut"
Dim lstrMessage As String
Dim lintResponse As Integer
lstrMessage = "Sort unsuccessful - please inform System Administrator if problem persist."
lintResponse = MsgBox(lstrMessage, vbOKOnly + vbInformation, "Sort Failed")
Note this name: subformfrmPurchasesubfrmPaidInvoices is the subform object on the form and not the actual source object which is the actual form used as the subform.
As far as the button being 'pushed', check your default value of the frame the tgl button is located. That will 'depresse' the tgl.
I'd recommend you have the 'base case' as the default and allow other cases as well as returning to the base case . . . which is what I've done in this code with case 1.