anchle

Excel 2010 Menüband Aufruf von Registerkarten

Ich habe im Menüband von Excel 4 eigene Registerkarten erschaffen. Nun möchte ich gerne diese nicht nur anklicken müssen, um den Inhalt zu sehen, sondern ein Makro schreiben, dass beim Aktivieren eines bestimmten Tabellenblattes auch zusätzlich diese Registerkarte aktiviert. Klingt zwar ganz praktisch, aber alle bisher gefundenen Lösungen führten leider zu Fehlermeldungen. Wer kann helfen?
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

Content-ID: 237432

Url: https://administrator.de/forum/excel-2010-menueband-aufruf-von-registerkarten-237432.html

Ausgedruckt am: 29.05.2025 um 06:05 Uhr

colinardo
Lösung colinardo 08.05.2014, aktualisiert am 06.06.2014 um 11:00:14 Uhr
Goto Top
Hallo anchle,
das lässt sich mit einem customUI XML-File für das Excel-File machen. Etwas ähnliches hatten wir hier schon mal:

Ich habe dir mal ein Demo-Sheet mit 3 Tabs erstellt welche jeweils beim Wechseln der Tabellen aktiviert werden. Das Dokument verwendet wie unter obigem Link geschrieben ein CustomXML-File für die Erstellung der zusätzlichen Tabs und der Buttons, damit sie vom Code aus angesprochen werden können. Dies müsstest du für deine selbst erstellen Tabs nachholen. Für das einfache Bearbeiten des XML-Files im Workbook kannst du den CustomUI Editor verwenden, oder dir in Visual Studio das Ribbon visuell zusammenbauen und als XML-Code exportieren.

Der Code des Beispiel-Sheets besteht aus folgenden Bestandteilen:
back-to-top1. customXML des Beispiels
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui" onLoad="RibbonOnLoad">  
    <ribbon>
        <tabs>
            <tab id="myTab1" label="myTab1">  
                <group id="grpTab1" label="Group1">  
                    <button id="btnTest1" imageMso="ImportExcel" label="TestButton" size="large" onAction="btnTest1_Click" />  
                </group>
            </tab>
 		<tab id="myTab2" label="myTab2">  
                <group id="grpTab2" label="Group1">  
                    <button id="btnTest2" imageMso="ImportExcel" label="TestButton" size="large" onAction="btnTest2_Click" />  
                </group>
            </tab>
		<tab id="myTab3" label="myTab3">  
                <group id="grpTab3" label="Group1">  
                    <button id="btnTest3" imageMso="ImportExcel" label="TestButton" size="large" onAction="btnTest3_Click" />  
                </group>
            </tab>
        </tabs>
    </ribbon>
</customUI>
back-to-top2. Modul-Code
'Öffentliche Variable für den Zugriff auf das Ribbon  
Public rib As IRibbonUI

'Callback das ausgeführt wenn das Workbook geladen wird  
Public Sub RibbonOnLoad(ByVal ribbon As IRibbonUI)
    Set rib = ribbon
End Sub

'Callback für Button auf Tab 1  
Public Sub btnTest1_Click(ByVal control As IRibbonControl)
    MsgBox "Das ist die callback procedure für Button 1"  
End Sub

'Callback für Button auf Tab 2  
Public Sub btnTest2_Click(ByVal control As IRibbonControl)
    MsgBox "Das ist die callback procedure für Button 2"  
End Sub

'Callback für Button auf Tab 3  
Public Sub btnTest3_Click(ByVal control As IRibbonControl)
    MsgBox "Das ist die callback procedure für Button 3"  
End Sub
back-to-top3. Worksheet-Code um das Sheet zu wechseln
Private Sub Worksheet_Activate()
    rib.ActivateTab "myTab1"  
End Sub

Grüße Uwe
Falls der Beitrag gefällt, seid so nett und unterstützt mich durch eine kleine Spende / If you like my contribution please support me and donate
anchle
anchle 05.06.2014 um 23:06:33 Uhr
Goto Top
Hallo, recht herzlichen Dank für Deine Mühe. Ich habe schon ein Menüband erstellt. Allerdings gefäät es mir noch nicht 100%-ig, weil noch zu unübersichtlich. Ich habe noch eine Frage; Wie kann ich es erreichen, dass auch beim Start der Datei gleich eine bestimmte Registerkarte geöffnet wird. Bisher klappt es auch bei Deiner Musterdatei erst beim Wechsel. Vielen Dank.
colinardo
Lösung colinardo 06.06.2014 aktualisiert um 11:00:20 Uhr
Goto Top
Zitat von @anchle:
Wie kann ich es erreichen, dass auch beim
Start der Datei gleich eine bestimmte Registerkarte geöffnet wird. Bisher klappt es auch bei Deiner Musterdatei erst beim
Wechsel. Vielen Dank.
Hierfür sollte diese Änderung ausreichen:
Public Sub RibbonOnLoad(ByVal ribbon As IRibbonUI)
    Set rib = ribbon
    rib.ActivateTab "myTab1"  
End Sub 
Grüße Uwe
anchle
anchle 06.06.2014 um 11:02:39 Uhr
Goto Top
Danke Danke Danke,

ich habe gestern 3 Stunden gesessen und es nicht geschafft und im Prinzip fehlte mir genau eine Zeile an der richtigen Stelle.

Viele Grüße und schöne Pfingsten

Helmut
colinardo
colinardo 06.06.2014 um 11:06:32 Uhr
Goto Top
Keine Ursache
Viele Grüße und schöne Pfingsten
Gleichfalls face-smile

Grüße Uwe