anchle
Goto Top

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?

Content-Key: 237432

Url: https://administrator.de/contentid/237432

Printed on: April 25, 2024 at 07:04 o'clock

Member: colinardo
Solution colinardo May 07, 2014, updated at Jun 06, 2014 at 09:00:14 (UTC)
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
Member: anchle
anchle Jun 05, 2014 at 21:06:33 (UTC)
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.
Member: colinardo
Solution colinardo Jun 05, 2014, updated at Jun 06, 2014 at 09:00:20 (UTC)
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
Member: anchle
anchle Jun 06, 2014 at 09:02:39 (UTC)
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
Member: colinardo
colinardo Jun 06, 2014 at 09:06:32 (UTC)
Goto Top
Keine Ursache
Viele Grüße und schöne Pfingsten
Gleichfalls face-smile

Grüße Uwe