Submenu und Commandbar-Button die 1000.

05/05/2008 - 02:04 von H. Ackermann | Report spam
Hallo Gemeinde,
ich tüftele schon seit geraumer Zeit an einem Problem und hoffe hier Hilfe zu
bekommen. Ich arbeite mit Windows XP und Word2003 und wollte folgende
Menü-Struktur als Commando-Button-Bar aufbauen:

- Schnipp -
MP1.0

MP1.1 -> MP1.1.1 -> MP1.1.1.1
-> MP1.1.2

MP1.2 -> MP1.2.1
-> MP1.2.2
-> MP1.2.3

MP1.3 -> MP1.3.1
-> MP1.3.2
-> MP1.3.3
- Schnapp -

Ein Mitschnitt im Recorder ergab für obige Struktur folgendes Makro:

- Schnipp -
Sub Makro1()
'
' Makro1 Makro
' Makro aufgezeichnet am 29.04.2008 von Neu '
CommandBars("Menu Bar").Controls.Add Type:=msoControlPopup, Before:
CommandBars("Untermenü 19514000").Controls.Add Type:=msoControlPopup,
Before:=1
CommandBars("Untermenü 19514000").Controls.Add Type:=msoControlPopup,
Before:=2
CommandBars("Untermenü 19514000").Controls.Add Type:=msoControlPopup,
Before:=3
CommandBars("Untermenü 19531093").Controls.Add Type:=msoControlPopup,
Before:=1
CommandBars("Untermenü 19531093").Controls.Add Type:=msoControlPopup,
Before:=2
CommandBars("Untermenü 19564015").Controls.Add Type:=msoControlPopup,
Before:=1
CommandBars("Untermenü 19540250").Controls.Add Type:=msoControlPopup,
Before:=1
CommandBars("Untermenü 19540250").Controls.Add Type:=msoControlPopup,
Before:=2
CommandBars("Untermenü 19540250").Controls.Add Type:=msoControlPopup,
Before:=3
CommandBars("Untermenü 19551328").Controls.Add Type:=msoControlPopup,
Before:=1
CommandBars("Untermenü 19551328").Controls.Add Type:=msoControlPopup,
Before:=2
CommandBars("Untermenü 19551328").Controls.Add Type:=msoControlPopup,
Before:=3 End Sub
- Schnapp -

Eine Übertragung auf meine MenüStruktur schlug aber fehl. Mein Versuch unter
dem Menüpunkt 2.6 einen Menüpunkt 2.6.1 oder 2.6.2. oder 2.6.3. einzufügen
klappe nicht.

- Schnipp -
Sub Document_New()
Call BASHauptMenueEinrichten
End Sub

Sub BASHauptMenueEinrichten()
' Application.CustomizationContext = ThisDocument.AttachedTemplate
CustomizationContext = ThisDocument 'Wenn z.B. ein Add-In den Fokus hat
Dim MenueBar As Office.CommandBar
Dim Menue As Office.CommandBarPopup, Knopf As CommandBarButton
Set Menue = CommandBars.FindControl(Type:=msoControlPopup, Tag:=Tag)
If Not Menue Is Nothing Then
Menue.Delete 'Aufràumen, falls bereits vorhanden
End If
Set MenueBar = CommandBars.Add(Leiste)
'
' Menüpunkt 1: 1.Bereich
'
Set Menue = CommandBars(Leiste).Controls.Add(Type:=msoControlPopup)
With Menue 'Neues PopUp-Menü profilieren
.Tag = Tag
.Caption = "&1.1.Bereich"
.TooltipText = "1.Bereich"
Set Knopf = .Controls.Add(Type:=msoControlButton)
With Knopf
.BeginGroup = False
.Tag = "Sub01001"
.Caption = "&MP1.1"
.TooltipText = "MP1.1"
.OnAction = "Sub01001"
End With
Set Knopf = .Controls.Add(Type:=msoControlButton)
With Knopf
.BeginGroup = False
.Tag = "Sub01006"
.Caption = "&MP1.2"
.TooltipText = "MP1.2"
.OnAction = "Sub01006"
End With
Set Knopf = .Controls.Add(Type:=msoControlButton)
With Knopf
.BeginGroup = False
.Tag = "Sub01011"
.Caption = "&MP1.3"
.TooltipText = "MP1.3"
.OnAction = "Sub01011"
End With
Set Knopf = .Controls.Add(Type:=msoControlButton)
With Knopf
.BeginGroup = True
.Tag = "Sub01016"
.Caption = "&MP1.4"
.TooltipText = "MP1.4"
.OnAction = "Sub01016"
End With
Set Knopf = .Controls.Add(Type:=msoControlButton)
With Knopf
.BeginGroup = False
.Tag = "Sub01021"
.Caption = "&MP1.5"
.TooltipText = "MP1.5"
.OnAction = "Sub01021"
End With

End With


' Menüpunkt 2: 2.Bereich

Set Menue = CommandBars(Leiste).Controls.Add(Type:=msoControlPopup)
With Menue 'Neues PopUp-Menü profilieren
.Tag = Tag
.Caption = "&2.Bereich"
.TooltipText = "2.Bereich"
' .OnAction = "TextmarkenSammeln"
Set Knopf = .Controls.Add(Type:=msoControlButton)
With Knopf
.BeginGroup = False
.Tag = "Sub02001"
.Caption = "&MP2.1"
.TooltipText = "MP2.1"
.OnAction = "Sub02001"
End With
Set Knopf = .Controls.Add(Type:=msoControlButton)
With Knopf
.BeginGroup = False
.Tag = "Sub02006"
.Caption = "&MP2.2"
.TooltipText = "MP2.2"
.OnAction = "Sub02006"
End With
Set Knopf = .Controls.Add(Type:=msoControlButton)
With Knopf
.BeginGroup = False
.Tag = "Sub02011"
.Caption = "&MP2.3"
.TooltipText = "MP2.3"
.OnAction = "Sub02011"
End With

...

Set Knopf = .Controls.Add(Type:=msoControlButton)
With Knopf
.BeginGroup = False
.Tag = "Sub02026"
.Caption = "&2.6"
.TooltipText = "2.6"
.OnAction = "Sub02026"
End With
Set Knopf = .Controls.Add(Type:=msoControlButton)
Set Knopf = .Controls.Add(Type:=msoControlButton)
Set Knopf = .Controls.Add(Type:=msoControlButton)
' proSubMenue_2_6_1_Eintrag (Knopf)
' proSubMenue_2_6_2_Eintrag (Knopf)
' proSubMenue_2_6_3_Eintrag (Knopf)
Set Knopf = .Controls.Add(Type:=msoControlButton)
With Knopf
.BeginGroup = False
.Tag = "Sub02031"
.Caption = "&MP2.7"
.TooltipText = "MP2.7"
.OnAction = "Sub02031"
End With
Set Knopf = .Controls.Add(Type:=msoControlButton)
With Knopf
.BeginGroup = True
.Tag = "Sub02036"
.Caption = "&MP2.8"
.TooltipText = "MP2.8"
.OnAction = "Sub02036"
End With

...

End With
End sub
- Schnapp -

Was mache ich nur verkehrt ? Wie komme ich an die Id's der Untermenü-Punkte
um meine zusàtzlichen Menüpunkte einzuhàngen. Ich hoffe, es kann mir jemand
bei dem Problem helfen.

Grüße
htackermann
 

Lesen sie die antworten

#1 Wolfram Jahn
05/05/2008 - 23:05 | Warnen spam
H. Ackermann schrieb:
Hallo Gemeinde,
ich tüftele schon seit geraumer Zeit an einem Problem und hoffe hier Hilfe zu
bekommen. Ich arbeite mit Windows XP und Word2003 und wollte folgende
Menü-Struktur als Commando-Button-Bar aufbauen:

- Schnipp -
MP1.0

MP1.1 -> MP1.1.1 -> MP1.1.1.1
-> MP1.1.2

MP1.2 -> MP1.2.1
-> MP1.2.2
-> MP1.2.3

MP1.3 -> MP1.3.1
-> MP1.3.2
-> MP1.3.3
- Schnapp -

Was mache ich nur verkehrt ? Wie komme ich an die Id's der Untermenü-Punkte
um meine zusàtzlichen Menüpunkte einzuhàngen. Ich hoffe, es kann mir jemand
bei dem Problem helfen.



Man kann sich im laufenden aber gestoppten Code per Direktfenster mal
durch eine vorhandene Menüstruktur durchhangeln und sehen, wie die
Dinger aufgebaut sind.

Wenn ich mich recht erinnere, muss man für jede Untermenüebene neben dem
aufrufenden CBButton auch wieder ein neues Untermenü definieren, das
dann wieder die CBButtons drin hat. Also nicht Unter-Buttons an Buttons
hàngen, sondern Menü -> Button -> SubMenü -> Sub-Button[1..n] und wenns
noch tiefer gehen soll in dem Stil weiter.



Grundsàtzlich möchte ich aber zu bedenken geben, dass tief
verschachtelte Menüs oft schlechter GUI-Stil sind und darauf hindeuten,
dass das Problem nicht Anwenderfreundlich gelöst ist. Nicht immer, aber
oft. Spàtestens auf der zweiten Ebene sollte statt eines weiteren
SubSubMenüs lieber eine kleine Userform aufgehen und den Rest der
Eingabedetaillierung enthalten. Die drei Pünktchen am Ende des
Eintragsnamens deuten dies gewöhnlich an (z.B. Word 2K):

Format
-> Hintergrund -> (bunte Matrix)
-> weitere Farben...
-> Fülleffekte...

Kannst Du überall nachschauen, ist ein GUI Prinzip bei durchdachten
Applikationen.


Wolfram

Ähnliche fragen