Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1672to1676
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
rechte Maustaste Kontextmenü - wohin Code
11.02.2019 22:42:22
STeve
Hallo liebe Helfer......für euch ein lächerliches Problem: Bitte aber um Hilfe.
Habe ca. 25 kleine Makros die ich mit cmd Button starte. Jetzt möchte ich - aus Platzgründen - umbauen.
Ideal ist folgender Code wo das Kontextmenü (rechte Maustaste) genau nach meinen Wünschen richten kann:
...aber wohin muss ich die Makros einfügen

a.)damit es nur auf dem bestimmten Blatt und
b.) nur in der betreffenden Arbeitsmappe
funktioniert
Sub Add_Action_to_Cells_Context_Menu()
Dim myCb As CommandBar
Dim myCtl As CommandBarControl
Set myCb = CommandBars("Cell")
Set myCtl = myCb.Controls.Add()
With myCtl
.Caption = "Befehlsname"
.OnAction = "Makro zum ausführen"
End With
Set myCtl = myCb.Controls.Add()
With myCtl
.Caption = "Anderer Name"
.OnAction = "Anderes Makro"
End With
End Sub

Sub Delete_Commandbars_New_Controls()
With CommandBars("Cell")
.Controls("Befehlsname").Delete
.Controls("Anderer Name").Delete
End With
Besten Dank mfg STeve


		

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: rechte Maustaste Kontextmenü - wohin Code
12.02.2019 01:21:03
mumpel
Hallo!
Ich würde das in RibbonX auslagern. Dann kannst Du mit "getVisible" kontrollieren. Läuft dann aber nur in Office 2010 und neuer.
RibbonX-Code:
<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" onLoad="XLContextMenue">

<ribbon></ribbon>

<backstage></backstage>

<contextMenus>
  <contextMenu idMso="ContextMenuCell">
    <menuSeparator id="ctmSep0"/>
        <button id="ctmbtn0" label="Makro1" onAction="Makro1"
                imageMso="FontBold" getVisible="getVisible_ContextMenueControls" />
        <button id="ctmbtn1" label="Makro2" onAction="Makro2"
                imageMso="FontItalic" getVisible="getVisible_ContextMenueControls"/>
  </contextMenu>
</contextMenus>

</customUI>

VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:René Holtz

Code erstellt und getestet in Office 16 - mit VBAHTML 12.6.0

In "DieseArbeitsmappe":
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
 If Not objRibbon Is Nothing Then objRibbon.Invalidate
End Sub

VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:René Holtz

Code erstellt und getestet in Office 16 - mit VBAHTML 12.6.0

In ein allgemeines Modul:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
 If Not objRibbon Is Nothing Then objRibbon.Invalidate
End Sub

VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:René Holtz

Code erstellt und getestet in Office 16 - mit VBAHTML 12.6.0

https://www.herber.de/bbs/user/127589.xlsm
Gruß, René
Anzeige
Nachtrag
12.02.2019 01:28:06
mumpel
Du kannst natürlich für jedes Blatt auch nur ein Button vorsehen. Dafür gibst Du der Schaltflächen-ID den Namen des Tabellenblattes, das kannst Du dann im Callback behandeln.
RibbonX-Code:
<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" onLoad="XLContextMenue">

<ribbon></ribbon>

<backstage></backstage>

<contextMenus>
  <contextMenu idMso="ContextMenuCell">
    <menuSeparator id="ctmSep0"/>
        <button id="Tabelle1" label="Makro1" onAction="Makro1"
                imageMso="FontBold" getVisible="getVisible_ContextMenueControls" />
        <button id="Tabelle2" label="Makro2" onAction="Makro2"
                imageMso="FontItalic" getVisible="getVisible_ContextMenueControls"/>

        <button id="Tabelle3" label="Makro3" onAction="Makro3"
                imageMso="FontItalic" getVisible="getVisible_ContextMenueControls"/>
  </contextMenu>
</contextMenus>

</customUI>

VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:René Holtz

Code erstellt und getestet in Office 16 - mit VBAHTML 12.6.0

getVisible-Ereignis:
Public Sub getVisible_ContextMenueControls(control As IRibbonControl, ByRef returnedValue)
 If ActiveSheet.Name = control.ID Then
    returnedValue = True
 Else
    returnedValue = False
 End If
End Sub

VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:René Holtz

Code erstellt und getestet in Office 16 - mit VBAHTML 12.6.0


Anzeige
Danke...........
15.02.2019 12:56:39
STeve
Danke lieber Mumpel für deine schnelle und wie - ich schon oft im Forum mitverfolgt habe - hoch qualifizierte Antwort bzw. deinen Tipp.
Ein eigenes Ribbon anzulegen scheint mir doch zuviel Arbeit. Werde es mit der rechten Maustaste lösen. Derzeit sind es ca. 25 Makros. Sollte mein Projekt dann schlussendlich doch zuviele Makros für die rechte MT erhalten werde ich deinen Tipp "versuchen" umzusetzen.
Besten Dank dir und Sorry für die späte Antwort - ist normal gar nicht meine Art - aber hatte in den letzten Tagen zu wenig Zeit.
Dir noch ein schönes WE und
glg STeve
Anzeige

49 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige