Für diejenigen von euch, die viel mit Access zu tun haben und schon etwas Fortgeschritten sind, habe ich hier folgende News, die ich per E-mail bekam und etwas abgeändert habe.
In Access 2007 ist es in Formularen und Berichten möglich, über die Eigenschaften "Kontextmenü" und "Kontextmenüleiste" ein eigenes Menü für den Abruf per Rechtsklick zuzuordnen. In den Vorgängerversionen konnten eigene Kontextmenü's über die Funktion Symbolleisten --> Anpassen angelegt werden. In Access 2007 ist diese Einstellung jedoch nicht mehr vorhanden und somit scheint es auf den ersten Blick unmöglich. Mit ein wenig VBA gelingt dies jedoch!
Das für die Verwaltung notwendige Objekt "CommandBars" und seine Unterobjekte und Methoden sind aus Kompatibilitätsgründen vorhanden. Diesen Bars kann nun eine neue Symbolleiste vom Typ "msoBarPopup" hinzugefügt, mit gewünschten Steuerelementen gefüllt und ein Kontextmenü zugewiesen werden.
1. Öffne ein(en) Formular/Bericht in der Entwurfsansicht.
2. Mit ALT + F11 wechselst du in die VBA-Umgebung.
3. Setzte über Extras -> Verweise eine Referenz auf "Microsoft Office 12.0 Object Library" (dies ist für den Zugriff auf "CommandBars"-Objekt notwendig)
4. Kopiere nun folgendes in den VBA-Editor der Ereignisprozeduren:
Const cstrCmdBar = "MeinKontextmenü"
Private Sub Form_Load()
Dim cb As CommandBar
Dim btn As CommandBarButton
On Error Resume Next
CommandBars(cstrCmdBar).Delete
Set cb = CommandBars.Add(cstrCmdBar, _
msoBarPopup,
False, False)
With cb
Set btn = _
.Controls.Add(msoControlButton, _
21,
, , True)
Set btn = _
.Controls.Add(msoControlButton, _
19,
, , True)
Set btn = _
.Controls.Add(msoControlButton, _
22,
, , True)
Set btn = _
.Controls.Add(msoControlButton, _
,
, , True)
With btn
.Style = msoButtonIconAndCaption
.Caption = "Meine
Kontextmenü-Funktion..."
.FaceId = 59
.BeginGroup = True
.OnAction =
"=KontextFunktion()"
End With 'btn
End With 'cb
Me.ShortcutMenu = True
Me.ShortcutMenuBar = cstrCmdBar
End Sub
Private Sub Form_Unload(Cancel As Integer)
On Error Resume Next
CommandBars(cstrCmdBar).Delete
End Sub
In einem Bericht ist es hier besonders wichtig, dass du "Form" durch "Report" ersetzt und bei der Zeile "Me.ShortcutMenu = True" ein Hochkomma voranstellst! Kopiere die Funktion nun in ein neues oder ein vorhandenes Modul:
Public Function KontextFunktion()
MsgBox "Hello World!"
End Function
Speichere danach die Änderungen und schließe das Modul. Wenn du das Formular nun anzeigen lässt, wird beim Laden ein Kontextmenü erstellt, das als Beispiel "Ausschneiden, Kopieren und Einfügen" enthält.