Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1268to1272
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Fragen zu CommandBars / msoControlButton

Fragen zu CommandBars / msoControlButton
Eddie
Hallo,
Zu Excel 2010 Ribbon-Leiste
1)
a) angenommen man möchte mehrere Knöpfe (msoControlButton) in der Symbolleiste platzieren, die zur selben Subroutine verweisen. Wie kann man sauber herausfinden, welcher Knopf die Subroutine gestartet hat?
b) Ist es bei .OnAction = "Test" möglich Parameter an die Subroutine zu übergeben, bzw. wie ist der Syntax dafür. Wenn ja erledigt sich a)
2) Ich aktiviere beim Start automatisch das Add-Ins Menü, damit meine Menüleiste immer verfügbar ist. Wenn ich mit Alt-Tab eine andere Excel-Mappe aufrufe, soll sich die Symbolleiste abschalten (denn die gehört ja nicht zu der anderen Mappe). Nun das Problem - ich entferne die Symbolleiste über das Ereignis Workbook_Deactivate. Nun klappt aber auf dem zweiten Workbook das Add-Ins Menü ungewollt zu, weil es leer ist. Wechsele ich mit Alt-Tab wieder zur ursprünglichen Leiste, wird die Symbolleiste reaktiviert, aber das Add-Ins Menü öffnet nicht von selbst. Um das auszutricksen ersetze ich die Hauptsymbolleiste durch eine Dummy-Sybolleiste, mit nur einem Schloss .FaceId = 225. Die Funktion ist gegeben - aber geht es eleganter?
Im ThisWorkbook habe ich:
Option Explicit
Public Shutdown As Boolean
Private Sub Workbook_Open()
Autostart_by_ThisWorkbook_Workbook_Open 0
AddCustomMenu ActiveSheet.Name
DelCustomMenu "DummySymbolleiste"
End Sub
Private Sub Workbook_Activate()
AddCustomMenu ActiveSheet.Name
DelCustomMenu "DummySymbolleiste"
End Sub
Private Sub Workbook_Deactivate()
If Shutdown = False Then AddDummyMenu 0
DelCustomMenu "Symbolleiste"
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
DelCustomMenu "Symbolleiste"
DelCustomMenu "DummySymbolleiste"
Shutdown = True
End Sub
3) Bei mir Ordnen sich die Buttons und Editfelder, innerhalb der Symbolleiste immer oben und dann von links nach rechts an. Kann man das Verhalten beeinflussen, so dass z.B. Ein Button nach rechts unten kommt? Entsprechende Befehle, wie ...right, ...Bottom habe ich vergeblich getestet
Gruß Eddie
AW: Fragen zu CommandBars / msoControlButton
14.07.2012 14:53:48
Hajo_Zi
zu 1 benutze control.id

AW: Fragen zu CommandBars / msoControlButton
14.07.2012 15:08:00
mumpel
Hallo!
Zu 2. Keine Chance. Mach doch eine XLSM-Datei daraus, mit einem benutzerdefinierten Tab. Dann hast Du mehr Möglichkeiten. Du solltest langsam umdenken und aufhören an alten Dingen festzuhalten.
Gruß, René
AW: Fragen zu CommandBars / msoControlButton
14.07.2012 15:08:47
mumpel
@ Hajo
Control.id bei alten Symbolleisten aus Excel 2003?
AW: Fragen zu CommandBars / msoControlButton
14.07.2012 15:12:21
Hajo_Zi
Hallo Rene,
es Stand er hat Ribbon gemacht und das geht erst ab 2007.
Gruß Hajo
AW: Fragen zu CommandBars / msoControlButton
14.07.2012 15:26:48
mumpel
Lies mal genau was da steht. ;-)
Anzeige
AW: Fragen zu CommandBars / msoControlButton
14.07.2012 15:29:04
Hajo_Zi
Hallo Rene,
mache Du es mal, gleich zu Anfang.
Zu Excel 2010 Ribbon-Leiste
Gruß Hajo
AW: Fragen zu CommandBars / msoControlButton
14.07.2012 15:30:38
mumpel
Ich habe auch den Rest gelesen. Da steht etwas von "msoControlButton" und "FaceID". ;-)
AW: Fragen zu CommandBars / msoControlButton
14.07.2012 15:33:02
Hajo_Zi
das intressiert doch nicht. Zu Anfang wurde schon geschrieben "Zu Excel 2010 Ribbon-Leiste"
Gruß Hajo
AW: Fragen zu CommandBars / msoControlButton
14.07.2012 23:50:04
Eddie
Hallo
Lach - so ein durcheinander wegen der Excel Version ;-)
Ja, es geht um die Excel 2010 Ribbon-Leiste
Ich habe mit 2003 Jahrelang gearbeitet, die 2010er Ribbonleiste ist Neuland für mich (2007 hatte ich nie)
Ich denke, ob ein eigener Tab oder die Add-Ins Leiste ist gar kein großer Unterschied, bezogen auf das beschriebene Problem. Der Inhalt wird entfernt und der Tab wird dann wohl auch verschwinden und sich bei nochmaligem alt-tab nicht reaktivieren.
Zum allgemeinen Verständnis hier Beispielhaft das Dummy-Menü auf das ich beim Alt-Tab drücken mit ...deactivate umschalte. Das eigentliche Menü, ist nach dem gleichen Schema aufgebaut und hat natürlich viel mehr Knöpfe und Funktionen.
Public Sub AddDummyMenu(dummy&)
Dim cMenuLeiste As Office.CommandBar
On Error Resume Next
DelCustomMenu "DummySymbolleiste"
On Error GoTo 0
Set cMenuLeiste = Application.CommandBars.Add("DummySymbolleiste", position:=msoBarTop,  _
Temporary:=True)
Dim cButtonDummy As Office.CommandBarButton
Set cButtonDummy = cMenuLeiste.Controls.Add(msoControlButton, Temporary:=True)
With cButtonDummy
.Style = msoButtonIcon
.FaceId = 225
.Caption = ""
'.OnAction = "Dummy"
End With
cMenuLeiste.Visible = True
End Sub
Gruß Eddie
Anzeige
AW: Fragen zu CommandBars / msoControlButton
15.07.2012 00:12:05
mumpel
Doch das macht einen Unterschied. Wenn Du ein eigenes Ribbon einbaust, dann bekommst Du genau das was Du möchtest. Denn im Gegesatz zur alten Symbolleiste ist ein eigenes Ribbon immer dateiabhängig. D.h. dass das benutzerdefinierte Tab immer nur in der Datei angezeigt wird, in der es integriert ist. Und Du kannst das Tab auch wieder anzeigen wenn Du die Arbeitsmappe aktivierst, zumindest unter Excel 2010. Stichwort objRibbon.ActivateTabcolor>
Nachtrag
15.07.2012 00:21:23
mumpel
Du kannst auch alle Standard-Tabs ausblenden, indem Du "startFromScratch" auf True setzt. Dann wird mit jedem Aktivieren der Arbeitsmappe das Standard-Ribbon ausgeblendet, weshalb dann nur noch das benutzerdefinierte Tab angezeigt wird. Mit Wechsel in eine andere Arbeitsmappe verschwindet das benutzerdefinierte Tab und das Standardribbon wird wieder angezeigt.
Anzeige
AW: Fragen zu CommandBars / msoControlButton
15.07.2012 11:53:35
Eddie
Hallo,
aber wie erstelle ich einen eigenen TAB? Geht das wieder nur als xms (RibbonX)?
Das was ich hier als Beispiel erstellt habe, landet ja grundsätzlich im Add-Ins Menü.
Gruß Eddie
AW: Fragen zu CommandBars / msoControlButton
15.07.2012 12:19:11
Eddie
Hallo,
die Links habe ich nicht vergessen. Ich hatte mir seinerzeit die ersten Schritte genau angesehen und für mich persönlich beschlossen, erst mal möglichst ohne xml auskommen zu wollen. Wobei eine einmalige Voreinstellung über xms (Add-Ins Menü aktivieren, aber kein Problem ist - die ganzen Menüs über xms zu erstellen schon.
Der Grund liegt darin, das ich als einziges Hilfsmittel den WinZip habe und befürchte bei diese Menü-Variante einfach viel zu langsam zu werden. Alleine schon wenn man andauernd den Editor wechseln muss kostet es Zeit, vom Einbinden ganz zu schweigen.
Verstehe mich nicht falsch, Du hast Dir mit diesen Anleitungen viel Mühe gegeben, aber selbst mit einschlägigen Vorkenntnissen brauch man auch Zeit um sich da rein zuarbeiten und auch die Denkweise zu übernehmen.
Gruß Eddie
Anzeige
AW: Fragen zu CommandBars / msoControlButton
15.07.2012 12:25:36
mumpel
Wie Du per Winzip eine Definitionsdatei einbinden kannst, kannst Du im Offline-Tutorial nachlesen.
Der XML-Code für das onLoad-Ereignis ist ganz einfach.
Den passenden VBA-Code kannst Du in der Beispieldatei von heute 11:40:50 ersehen.
Du kannst mir Deine Datei auch per Email senden, dann baue ich Dir das ein. Ist kein großes Problem. Emailadresse findest Du im Impressum meiner Homepage (Impressum).
Beispiele
15.07.2012 01:30:09
mumpel
Anbei mal zwei Beispieldateien (als ZIP-Archiv gepackt).
Beispiel 1:
"Test_RibbonOff". In dieser Datei wird das Standardribbon deaktiviert, sobald die Datei aktiviert wird. Mit Deativieren der Datei wird das Standardribbon wieder angezeigt und das benutzerdefinierte Tab ausgeblendet. Du wirst aber feststellen, dass es im VBA-Code keine Anweisung zum Aktivieren/Deaktivieren gibt. Die Anweisung erfolgt über "startFromScratch" in der Ribbon-Definitionsdatei.
Beispiel 2:
"Test_ActivateTab". In dieser Datei wird das beuntzerdefinierte Tab immer automatisch aktiviert, sobald die Datei aktiviert wird (nur Excel 2010 und höher, nicht in Excel 2007). Auch hier wird das benutzerdefinierte Tab ausgeblendet, sobald die Datei deaktiviert wird. Die Aktivierung erfolgt über "objRibbon.ActivateTab". Das funktioniert aber nur in Verbindung mit dem onLoad-Ereignis. Ohne onLoad funktioniert "ActivateTab" nicht.
https://www.herber.de/bbs/user/80992.zip
Du wirst also feststellen dass es sehr wohl einen großen Unterschied gibt.
Anzeige
AW: Beispiele
15.07.2012 12:22:38
Eddie
Besten Dank - ich schaue mir das an
Gruß Eddie
AW: Beispiele
15.07.2012 12:27:13
Eddie
Hallo,
ich bestätige, dass ist so wie ich es haben möchte - danke für die Beispiele
Gruß Eddie
Noch ein Beispiel
15.07.2012 11:40:50
mumpel
Nach dem Ausschlafen hier ein Beispiel, wie Du Deine alte Symbolleiste behalten und das Add-Ins-Tab automatisch aktivieren kannst. Aber auch dafür benötigst Du einen kleinen XML-Code und ein onLoad-Ereignis. Läuft nur ab Excel 2010, nicht in Excel 2007. Wenn Du Dir Arbeit ersparen möchtest, kannst Du es auch so machen.
https://www.herber.de/bbs/user/80994.zip
AW: Noch ein Beispiel
15.07.2012 12:50:08
mumpel
Dann muss es aber auch funktionieren. Möglicherweise hast Du beim Einbinden einen kleinen Fehler gemacht.
Du musst die Ansicht in WinRar anpassen. Dazu Tastenkombination STRG+T drücken. "userCustomization" ist nur vorhanden, wenn Du über das Officemenü eine dateiabhängige Schnellzugriffleiste eingebaut hast. "customUI" ist nur vorhanden, wenn Du über den CUE eine XML-Datei erstellt hast. Den Ordner "customUI" kannst Du manuell einfügen, indem Du diesen Ordner erstellst, z.B. über den Desktop, und dann einfach über Winrar in die Datei integrierst.
Nachtrag
15.07.2012 12:51:55
mumpel
Der Ordner muss nicht zwingend "customUI" heissen. Du kannst ihn benennen wie Du möchtest (keine Umlaute nutzen), musst dies dann natürlich in der .rels auch so angeben.
Anzeige
AW: Noch ein Beispiel
15.07.2012 19:11:09
Eddie
Hallo,
"userCustomization" ist nur vorhanden, wenn Du über das Officemenü eine dateiabhängige Schnellzugriffleiste eingebaut hast.
Kannst Du mir hier noch mal eben sagen wie das geht, oder an welcher Stelle, bzw. in weilchem Tutorial ich das finde?
"über das Officemenü" klingt, als wenn das eine Excel eigene Funktion ist, die man einfach über das Menü erreichen kann? Die Frage ist, wo genau.
Gruß Eddie
AW: Noch ein Beispiel
15.07.2012 19:29:04
mumpel
1. Das kannst Du in der Excel-Hilfe nachlesen.
2.
2.1. Datei-Optionen-Symbolleiste für den Schnellzugriff
2.2. Bei "Symbolleiste für den Schnellzugriff anpassen" wählst Du die gewünschte Datei
2.3. Nun mindestens ein Makro oder eine integrierte Funktion hinzufügen
2.4. Mit OK abschließen. Änderungen speichern.
3. Die "usercustomization" benötigst Du nicht zwingend, da diese nur eine dateiabhängige Schnellzugriffleiste enthält. Wenn Du diese nicht benötigst, kannst Du die "usercustomization" auch weglassen. In der Anleitung steht ja auch "falls vorhanden". ;-)
Anzeige
Nachtrag
15.07.2012 19:31:28
mumpel
Übrigens findest Du im Teil 18 des Workshops ausführliche Ausführungen zum Thema "dateianhängige Schnellzugriffleiste".
Noch ein Hinweis
15.07.2012 13:38:58
mumpel
Du musst die XML-Datei auch nicht zwingend in "customUI" ablegen. Du kannst z.B. auch im Ordner "docProbs" ablegen und in der .rels darauf verweisen. Das ist aber nicht "die Regel", daher steht dies auch nicht im Tutorial. Die XML-Datei darf sich aber auf keinen Fall im Wurzelverzeichnis befinden, dort darf nur die "[Content_Types].xml" abgelegt werden.
AW: Noch ein Hinweis
15.07.2012 19:00:36
Eddie
Hallo mumpel,
danke noch mal für Deine ganze Mühe
Gruß Eddie
AW: Noch ein Hinweis
15.07.2012 19:35:39
mumpel
Mühe macht mir das nicht. Ich mache das schon seit 6 Jahren, da erlangt man jede Menge Erfahrung. Und schneller wird man auch mit der Zeit. Leider beschäftigen sich zu wenige Anwender mit diesem Thema, so dass ich hier ziemlich alleine bin mit diesem Thema.
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige