Individuelles Kontextmenü

by dArtagnan 7. October 2008 16:19

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. 

 

Currently rated 5.0 by 2 people

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tipps & Tricks | Office

Related posts

Add comment

Um einen Kommentar zu schreiben, müssen Sie sich einloggen!

Calendar

<<  February 2012  >>
MoTuWeThFrSaSu
303112345
6789101112
13141516171819
20212223242526
2728291234
567891011

View posts in large calendar

Werbung

Recent comments

Tags

Categories


Archive

Blogroll

Download OPML file OPML