2
www.ChF-Online.de  

Rund um die Menüleisten (II)

   Neuigkeiten
   API-Aufrufe in VBA
   VBA2HTML
   Word
   Word-VBA
 Verschiedenes
 Feld-Arbeiten
 Form-Sachen
aktiv aktiv Menü-/Symbolleisten
 Dynamische Symbole
 Symbolleisten ausblenden
 Menümakros identifizieren
 Menüleisten (I)
aktiv  Menüleisten (II)
 Menü-/Symbolleisten-Schutz
 Gruppenschaltflächen
 VBA und Lotus Notes
 VBA und Mail
 Inside VBAIDE
 Von Word nach Outlook
 Fix-und-Fertiges/Projekte
   Word2007 (RibbonX)
   Word2010 (RibbonX)
   Outlook-VBA
   Links zu VB(A)
   DocToHelp
   Netport Express XL
   Astronomie
   Gästebuch
   Volltextsuche
   Sitemap
   Buch:Word-Programmierung
   Impressum & Kontakt
   Datenschutzerklärung
Getestet unter Word97Getestet unter Word2000  
Makro/Datei speichern
Print

Prinzipiell unterscheidet sich die Menüleiste nicht von den Symbolleisten. Jedoch ist sie nicht so flexibel und frei anpassbar wie die Symbolleisten; so kann z.B. keine weitere Menüleiste hinzugefügt werden.
Der Zugriff auf die einzelnen Controls (Einträge und Menüpunkte) erfolgt immer über das Objekt CommandBars("Menu Bar").
Das Hinzufügen eines weiteren Menüeintrages erfolgt über die Add-Methode der CommandBar-Controls, wobei theoretisch alle Control-Typen verwendet werden können.
Das folgende Beispiel fügt einen neuen Menüeintrag an letzter Stelle mit dem Namen "Neuer Eintrag" in die Menüleiste ein:

Sub MnuNeu()  
Dim msg, antw As String 
Set cbmnu = CommandBars("Menu Bar")
Set ctlmnu = cbmnu.Controls.Add(Type:=msoControlPopup, ID:=1, Temporary:=True)
With ctlmnu
  .Caption = "Neuer Eintrag"
End With 
End Sub 

Um dem Eintrag einen Menüpunkt hinzuzufügen, setzt man am Besten zuerst einen Verweis auf den Menüeintrag (hier "Neuer Eintrag"). Und nur wenn der Rückgabewert nicht Nothing (Zeile 5) ist, wird der Menüpunkt hinzugefügt (Zeile 6).
Anschließend werden die Beschriftung, das Symbol und die Aktion für den Menüpunkt festgelegt. Für die Aktion muss der Name einer Prozedur oder Funktion angegeben werden, wobei dieses Makro keine Parameter erwarten darf.


Beispiel
1    Sub MnuEintragNeu()  
2    Dim ctlumnu As CommandBarControl 
3    Set cbmnu = CommandBars("Menu Bar")
4    Set ctlmnu = cbmnu.FindControl(Type:=msoControlPopup, ID:=1)
5    If Not ctlmnu Is Nothing Then 
6      Set ctlumnu = ctlmnu.Controls.Add(Type:=msoControlButton, ID:=1, _
         Temporary:=True)
7      With ctlumnu
8        .Caption = "1. Menüpunkt"
9        .FaceId = "463"
10       .OnAction = "MyMakro"
11     End With 
12   End If 
13   End Sub  

Wenn ein Untermenüeintrag (msoControlPopup) hinzugefügt werden soll, muss die Zeile 6 folgendermaßen geändert werden:

6      Set ctlumnu = ctlmnu.Controls.Add(Type:=msoControlPopup, ID:=1, _
         Temporary:=True)

Hinweis:
Allerdings kann einem Untermenüeintrag kein Symbol über die FaceID-Eigenschaft zugewiesen werden, und es sollte auch keine Aktion ausgeführt werden.

Das Entfernen eines Menüpunktes kann auf verschiedene Wege erfolgen: Ist der Name des Menüeintrags und des Menüpunkts bekannt, kann er direkt angesprochen und gelöscht werden:

Sub MnuEintragLöschen()  
On Error Resume Next 
Dim cbmnu As CommandBar 
Dim ctldelete As CommandBarControl 
Set cbmnu = CommandBars("Menu Bar")
Set ctldelete = cbmnu.Controls("Neuer Eintrag").Controls("1. Menüpunkt")
If Not ctldelete Is Nothing Then ctldelete.Delete
End Sub  

Ist nur die Beschriftung bekannt, müssen alle Menüeinträge mit allen Menüpunkten durchlaufen und die Beschriftungen (.Caption-Eigenschaften) geprüft werden.

<< Zurück (Teil I)


 Besucher: 0 online  |  0 heute  |  0 diesen Monat  |  2219179 insgesamt | Seitenaufrufe: 77   Letzte Änderung: 24.06.2006 © 2001-18 Christian Freßdorf
  Ich glaube, daß sich Gott, als er den Menschen erschaffen hat, gewaltig überschätzt hat.
Oscar Wilde, 1854-1900, irischer Schriftsteller
 powered by phpCMS and PAX