Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Ribbon aus-/einblenden

Ribbon aus-/einblenden
28.08.2017 14:42:06
Thomas
Hallo
Ich möchte beim öffnen der Arbeitsmappe einen (eigenen) Ribbon ausblenden. Beim click auf einen anderen Ribbon soll dieser wieder eingeblendet werden. Ich weiss aber nicht, wie ich den Verweis auf einen anderen Ribbon mache. Das Testszenario ist soweit ganz einfach:
Public RibbonExcelOutlook As IRibbonUI
'Callback for customUI.onLoad

Sub onLoadExcelOutlook(ribbon As IRibbonUI)
Set RibbonExcelOutlook = ribbon
' Hier möchte ich den Button5 ausblenden
End Sub
Sub ButtonNotVisibile(control As IRibbonControl)
'Hier möchte ich den Button5 wieder einblenden.
End Sub
Sub Button5_getVisible(control As IRibbonControl, ByRef returnedVal)
'Hier kommt noch Code hinzu
End Sub
Vielen Dank für Eure Hilfe.
Gruss
Thomas
Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Ribbon aus-/einblenden
28.08.2017 15:42:03
Nepumuk
Hallo Thomas,
du willst also beim Klick auf irgendeinen Button in den eingebauten Menus zusätzlich dein Tab einblenden. Das macht für mich keinen Sinn. Es ist zwar möglich die Prozeduren der eingebauten Buttons mit eigenen Prozeduren zu belegen, aber bei "allen" Buttons sprechen wir von ein paar hundert Prozeduren die zwar ausgeführt werden aber auch zusätzlich dein Tab einblenden. Das sind sicher ein paar tausend Zeilen VBA -Code (vom XML-Code ganz zu schweigen). Und wenn es dann noch Bedingungen gibt dein Tab wieder auszublenden verdoppelt sich das Ganze.
Willst du das wirklich?
Gruß
Nepumuk
Anzeige
AW: Ribbon aus-/einblenden
28.08.2017 16:25:47
Thomas
Hallo Nepumuk
Nun, da habe ich mich anscheinend nicht gut ausgedrückt. Ich möchte genau beim drücken auf ein Ribbon-Control (Callback 'ButtonNotVisibile') genau ein Ribbon-Control ('Button5') einblenden, nachdem es beim Start der Arbeitsmappe ausgeblendet wurde.
Ich hoffe es ist jetzt klarer :o)
Anzeige
AW: Ribbon aus-/einblenden
28.08.2017 17:17:11
Nepumuk
Hallo Thomas,
welchen Button? Und liegt dein Button in dem selben Ribbon oder wie hab ich das zu verstehen? Soll dein Button nur ein- oder auch ausgeblendet werden?
Werd ein bisschen genauer!
Gruß
Nepumuk
AW: Ribbon aus-/einblenden
28.08.2017 18:11:16
Thomas
hmm, jetzt bin ich einigermassen verwirrt. Aber ich versuche es nochmals von anfang an zu erklären:
XML-Code ist hier, da ich nicht weiss, wie ich ihn direkt hier einfügen kann
https://www.herber.de/bbs/user/115835.txt
Als Code habe ich:
Public RibbonExcelOutlook As IRibbonUI
'Callback for customUI.onLoad
Sub onLoadExcelOutlook(ribbon As IRibbonUI)
Set RibbonExcelOutlook = ribbon
    -----> Hier möchte ich Button6 ausblenden
End Sub
'Callback for Button5 onAction
Sub subEnableButton6(control As IRibbonControl)
MsgBox "Button 5"
-----> Hier möchte ich Button6 einblenden
End Sub
'Callback for Button6 onAction
Sub ShowMessage(control As IRibbonControl)
MsgBox "Button 6"
End Sub
'Callback for Button6 getVisible
Sub Button6_getVisible(control As IRibbonControl, ByRef returnedVal)
End Sub
Und ich weiss nicht wie ich Button6 beim öffnen der Arbeitsmappe aus- resp. beim Klick auf Button5 wieder einblenden kann.
Anzeige
AW: Ribbon aus-/einblenden
28.08.2017 19:13:02
Nepumuk
Hallo Thomas,
teste mal:
Option Explicit

Private lobjRibbon As IRibbonUI
Private lblnButton6Visible As Boolean

'Callback for customUI.onLoad
Sub onLoadExcelOutlook(ribbon As IRibbonUI)
    Set lobjRibbon = ribbon
End Sub

'Callback for Button5 onAction
Sub subEnableButton6(control As IRibbonControl)
    MsgBox "Button5"
    lblnButton6Visible = True
    lobjRibbon.InvalidateControl "Button6"
End Sub

'Callback for Button6 getVisible
Sub Button6_getVisible(control As IRibbonControl, ByRef returnedVal)
    returnedVal = lblnButton6Visible
End Sub

'Callback for Button6 onAction
Sub ShowMessage(control As IRibbonControl)
    MsgBox "Button6"
End Sub

Gruß
Nepumuk
Anzeige
AW: Ribbon aus-/einblenden
29.08.2017 11:07:59
Thomas
Vielen Dank für Eure Beiträge. Ich habe jetzt den von Nepumuk angewendet und der funktioniert.
Gruss
Thomas
;
Anzeige
Anzeige

Infobox / Tutorial

Ribbon in Excel aus- und einblenden


Schritt-für-Schritt-Anleitung

Um ein Ribbon in Excel mit VBA auszublenden und wieder einzublenden, kannst du die folgenden Schritte befolgen:

  1. Öffne den VBA-Editor: Drücke ALT + F11, um den Editor zu öffnen.

  2. Erstelle ein neues Modul: Klicke mit der rechten Maustaste auf „VBAProject (deinWorkbookName)“ und wähle „Einfügen“ > „Modul“.

  3. Füge den folgenden Code ein:

    Public RibbonExcelOutlook As IRibbonUI
    Private lblnButton6Visible As Boolean
    
    'Callback for customUI.onLoad
    Sub onLoadExcelOutlook(ribbon As IRibbonUI)
       Set RibbonExcelOutlook = ribbon
       lblnButton6Visible = False ' Button6 beim Start ausblenden
    End Sub
    
    'Callback for Button5 onAction
    Sub subEnableButton6(control As IRibbonControl)
       lblnButton6Visible = True
       RibbonExcelOutlook.InvalidateControl "Button6" ' Button6 einblenden
    End Sub
    
    'Callback for Button6 getVisible
    Sub Button6_getVisible(control As IRibbonControl, ByRef returnedVal)
       returnedVal = lblnButton6Visible
    End Sub
    
    'Callback for Button6 onAction
    Sub ShowMessage(control As IRibbonControl)
       MsgBox "Button 6"
    End Sub
  4. Füge den XML-Code für das Ribbon hinzu: Stelle sicher, dass du das XML für dein Ribbon korrekt konfiguriert hast, um die Buttons Button5 und Button6 zu definieren.

  5. Teste das Ribbon: Schließe den VBA-Editor und teste dein Ribbon, indem du die Arbeitsmappe öffnest und auf Button5 klickst, um Button6 einzublenden.


Häufige Fehler und Lösungen

  • Fehler: Button wird nicht angezeigt
    Lösung: Stelle sicher, dass der onLoad-Callback richtig aufgerufen wird und dass der Status von lblnButton6Visible auf True gesetzt wird, bevor du InvalidateControl aufrufst.

  • Fehler: Ribbon wird nicht geladen
    Lösung: Überprüfe, ob der XML-Code korrekt in die Arbeitsmappe integriert wurde und dass die customUI-Datei vorhanden ist.


Alternative Methoden

Falls du eine weniger programmatische Lösung suchst, kannst du auch die Ribbon-Optionen in Excel anpassen, um bestimmte Menüs oder Funktionen ein- oder auszublenden. Dies kann über die Excel-Optionen unter „Anpassen des Menübands“ erfolgen.


Praktische Beispiele

Hier ist ein einfaches Beispiel, wie du ein Ribbon mit zwei Buttons erstellen kannst:

<customUI xmlns="http://schemas.microsoft.com/office/officeapp">
    <ribbon>
        <tabs>
            <tab id="CustomTab" label="Mein Tab">
                <group id="MyGroup" label="Meine Gruppe">
                    <button id="Button5" label="Button 5" onAction="subEnableButton6"/>
                    <button id="Button6" label="Button 6" onAction="ShowMessage" getVisible="Button6_getVisible"/>
                </group>
            </tab>
        </tabs>
    </ribbon>
</customUI>

In diesem Beispiel wird Button6 beim Start der Arbeitsmappe ausgeblendet und erscheint erst, wenn du auf Button5 klickst.


Tipps für Profis

  • Verwende InvalidateControl, um die Sichtbarkeit von Buttons dynamisch zu steuern. Das gibt dir mehr Flexibilität, ohne die gesamte Ribbon-Definition neu laden zu müssen.
  • Teste deinen Code regelmäßig, um sicherzustellen, dass Änderungen wie gewünscht funktionieren.
  • Achte darauf, deine VBA-Projekte gut zu dokumentieren, besonders wenn du mit mehreren Ribbons oder umfangreichen Codes arbeitest.

FAQ: Häufige Fragen

1. Wie kann ich mehrere Ribbons verwalten?
Du kannst mehrere IRibbonUI-Objekte in verschiedenen Modulen erstellen und sie entsprechend in den jeweiligen Callbacks verarbeiten.

2. Was ist IRibbonControl?
IRibbonControl ist ein Interface, das dir ermöglicht, Informationen über die verschiedenen Steuerelemente im Ribbon zu erhalten und deren Verhalten zu steuern.

3. Welche Excel-Versionen unterstützen das Ribbon?
Das Ribbon-Interface ist in Excel 2007 und neueren Versionen verfügbar. Stelle sicher, dass du eine kompatible Version verwendest, um die Funktionen nutzen zu können.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige