AW: Add-In-Menü verschwindet bei Diagrammaktivierung
27.02.2004 15:21:22
Matthias
Hallo Maurice,
vielen Dank für den Tip.
Leider komme ich jedoch nicht weiter.
Ich denke es muß irgendeinen Befehl geben, der direkt bei der Menüerzeugung aufgerufen wird.
Mein Code für das Menü sieht so aus ( dabei werden die Infos aus einem Tabellenblatt ausgeslesen)
Sub CreateMenu()
' Duese Routine sollte beim Öffnen der Arbeitsmappe aufgerufen werden.
' ACHTUNG: Kein Error-Handling!
Dim MenuSheet As Worksheet
Dim MenuObject As CommandBarPopup
Dim MenuItem As Object
Dim SubMenuItem As CommandBarButton
Dim Row As Integer
Dim MenuLevel, NextLevel, PositionOrMacro, Caption, Divider, FaceId
Dim kontextname$
' In dieser Tabelle befindet sich die Menüdefinition
Set MenuSheet = ThisWorkbook.Sheets("MenuSheet")
kontextname = MenuSheet.Cells(2, 2)
' Doppelte Menüs vermeiden
Call DeleteMenu
' Zeilenzähler initialisieren
Row = 2
' Menüs basierend auf der Tabelle anlegen
Do Until IsEmpty(MenuSheet.Cells(Row, 1))
With MenuSheet
MenuLevel = .Cells(Row, 1)
Caption = .Cells(Row, 2)
PositionOrMacro = .Cells(Row, 3)
Divider = .Cells(Row, 4)
FaceId = .Cells(Row, 5)
NextLevel = .Cells(Row + 1, 1)
End With
Select Case MenuLevel
Case 1 ' Menü
' Erste Ebene zur Worksheet CommandBar hinzufügen
Set MenuObject = Application.CommandBars(1). _
Controls.Add(Type:=msoControlPopup, _
Before:=PositionOrMacro, _
Temporary:=True)
MenuObject.Caption = Caption
Case 2 ' Ein Menüpunkt
If NextLevel = 3 Then
Set MenuItem = MenuObject.Controls.Add(Type:=msoControlPopup)
Else
Set MenuItem = MenuObject.Controls.Add(Type:=msoControlButton)
MenuItem.OnAction = PositionOrMacro
End If
MenuItem.Caption = Caption
If FaceId <> "" Then MenuItem.FaceId = FaceId
If Divider Then MenuItem.BeginGroup = True
Case 3 ' Ein Untermenüpunkt
Set SubMenuItem = MenuItem.Controls.Add(Type:=msoControlButton)
SubMenuItem.Caption = Caption
SubMenuItem.OnAction = PositionOrMacro
If FaceId <> "" Then SubMenuItem.FaceId = FaceId
If Divider Then SubMenuItem.BeginGroup = True
End Select
Row = Row + 1
Loop
End Sub