|
MajP (TechnicalUser) |
8 Dec 11 10:36 |
This works, but is a little primitive. If I had time I would write it so it could be used anywhere. It is hardwired to the form, and you would have to write code to make this available to all your forms. put in a standardmodule CODESub CreateSimpleShortcutMenu() Dim cmbShortcutMenu As Office.CommandBar 'need reference Microsoft Office 1X.0 Object Library ' Create a shortcut menu named "SimpleShortcutMenu". Dim cmdBar As CommandBar Dim newcontrol As CommandBarControl For Each cmdBar In Application.CommandBars If cmdBar.Name = "SimpleShortcutMenu" Then Exit Sub Next cmdBar Set cmbShortcutMenu = CommandBars.Add("SimpleShortcutMenu", _ msoBarPopup, False, False) ' Add your custom selection cmbShortcutMenu.Controls.Add Type:=msoControlButton, Id:=605
Set newcontrol = cmbShortcutMenu.Controls.Add(Type:=msoControlButton) newcontrol.Caption = "Select All" newcontrol.OnAction = "SelectAll" Set newcontrol = cmbShortcutMenu.Controls.Add(Type:=msoControlButton) newcontrol.Caption = "UnSelect All" newcontrol.OnAction = "UnSelectAll" Set cmbShortcutMenu = Nothing End Sub
Public Sub SelectAll() Dim rs As DAO.Recordset Dim frm As Access.Form Dim recordStart As Integer Dim recordEnd As Integer Dim I As Integer Const FormName = "frmProducts" Const SelectField = "Selected" Set frm = Forms(FormName) Set rs = frm.RecordsetClone recordStart = frm.SelTop - 1 recordEnd = recordStart + frm.SelHeight - 1 rs.MoveFirst For I = recordStart To recordEnd rs.AbsolutePosition = I 'MsgBox rs!ProductName rs.Edit rs.Fields(SelectField) = True rs.Update Next I frm.Requery frm.Recordset.AbsolutePosition = recordStart End Sub Public Sub UnSelectAll() Dim rs As DAO.Recordset Dim frm As Access.Form Dim recordStart As Integer Dim recordEnd As Integer Dim I As Integer Const FormName = "frmProducts" Const SelectField = "Selected" Set frm = Forms(FormName) Set rs = frm.RecordsetClone recordStart = frm.SelTop - 1 recordEnd = recordStart + frm.SelHeight - 1 rs.MoveFirst For I = recordStart To recordEnd rs.AbsolutePosition = I 'MsgBox rs!ProductName rs.Edit rs.Fields(SelectField) = False rs.Update Next I frm.Requery frm.Recordset.AbsolutePosition = recordStart End Sub
put in the form CODEPrivate Sub Form_Load() CreateSimpleShortcutMenu Me.ShortcutMenuBar = "SimpleShortcutMenu" End Sub
Now you can select the records and right click to select/deselect |
|