Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1572to1576
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

Ribbon Enable/Disable

Ribbon Enable/Disable
05.08.2017 09:28:33
chris37170
Hallo Miteinander,
ich beschäftige mich gerade mit der Ribbon Programmierung unter Excel 2013. Das was ich machen will, funktioniert auch sehr gut, aber ich habe eine Frage zur Vereinfachung eines Menüeintrags.
Von der Seite http://www.office-loesung.de/ftopic403764_0_0_asc.php habe ich mir ein Programmierbespiel heruntergeladen und an meine Bedürnisse angepasst (s.u.)






label="Monatsauswahl" >





Leider muss ich für jeden Button einen eigenen "getEnabled" Teil schreiben, obwohl Sie sich nur im Blattnamen unterscheiden. Bei zwanzig verschiedenen Buttons ist dies etwas mühsam (m.M. auch unnötig) aber mir fällt keine Lösung ein um diese Buttons für jedes Blatt zu enablen bzw. disablen. Dies habe ich in der Beispielmappe dargestellt (https://www.herber.de/bbs/user/115254.xlsm).
Bei Ribbons bin ich absoluter Neuling, klappt aber alles soweit. Kann mir jemand einen hilfreichen Tipp geben?
Mfg
Christoph

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Ribbon Enable/Disable
05.08.2017 09:59:28
mumpel
Hallo!
Es genügt durchaus eine Rückruffunktion. Damit das sauber funktioniert schreibst Du den Blattnamen in das Tag-Attribut, welches Du dann in der Rückruffunktion auswerten kannst.
XML-Code:
<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui">
  <ribbon>
    <tabs>
      <tab id="tab0" label="MeinTest">
        <group id="grp0" label="MeinTest">
          <button id="btn0" label="MeinTest1" imageMso="AutoDial" size="large" _
                  onAction="onAction_Button" getEnabled="getEnabled_Button"
                  tag="Tabelle1" />
          <button id="btn1" label="MeinTest2" imageMso="AutoDial" size="large" _
                  onAction="onAction_Button" getEnabled="getEnabled_Button"
                  tag="Tabelle2" />
        </group>
      </tab>
    </tabs>
  </ribbon>
</customUI>

VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media

Code erstellt und getestet in Office 16 - mit VBAHTML 12.6.0

VBA-Code:
Public Sub getEnabled_Button(control As IRibbonControl, ByVal returnValue)
  If ActiveSheet.Name = control.Tag Then returnValue = True
End Sub

VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media

Code erstellt und getestet in Office 16 - mit VBAHTML 12.6.0

Gruß, René
Anzeige
AW: Ribbon Enable/Disable
05.08.2017 10:06:51
mumpel
Nachtrag:
Damit das alles funktioniert muss natürlich das onLoad-Ereignis eingesetzt werden.
XML-Code:
<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" onLoad="onLoad_98">
  <ribbon>
    <tabs>
      <tab id="tab0" label="MeinTest">
        <group id="grp0" label="MeinTest">
          <button id="btn0" label="MeinTest1" imageMso="AutoDial" size="large" _
                  onAction="onAction_Button" getEnabled="getEnabled_Button"
                  tag="Tabelle1" />
          <button id="btn1" label="MeinTest2" imageMso="AutoDial" size="large" _
                  onAction="onAction_Button" getEnabled="getEnabled_Button"
                  tag="Tabelle2" />
        </group>
      </tab>
    </tabs>
  </ribbon>
</customUI>

VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media

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:RMH Software & Media

Code erstellt und getestet in Office 16 - mit VBAHTML 12.6.0


In ein allgemeines Modul:
Option Private Module
Option Explicit

Public objRibbon As IRibbonUI

Public Sub onLoad_98(ribbon As IRibbonUI)
  Set objRibbon = ribbon
End Sub

Public Sub onAction_Button(control As IRibbonControl)

End Sub

Public Sub getEnabled_Button(control As IRibbonControl, ByVal returnValue)
   If ActiveSheet.Name = control.Tag Then returnValue = True
End Sub

VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media

Code erstellt und getestet in Office 16 - mit VBAHTML 12.6.0


Anzeige
AW: Ribbon Enable/Disable
05.08.2017 11:08:59
chris37170
Hallo René,
herzlichen Dank für Deine Antwort. Ich habe diese sofort umgesetzt, aber weder in der Ursprungsdatei, noch in einer neuen Datei funktioniert die Lösung.
Ich habe Deinen Code in die Datei eingefügt. Zwei Anpassungen habe ich dabei forgenommen:
im XML Code die _ entfernt
die beiden Arbeitsblätter sowohl in der Arbeitsmappe als auch im XML Code geändert.
Die Buttons sind beim Aufruf des Menüs beide disabled. Es soll aber nur das jeweils angewählte Blatt diabled und das entsprechend andere Blatt enabled sein. Klappt aber bei beiden Blättern nicht, obwohl ich deinen Code 1:1 eingefügt haben. Anbei habe ich die neue Beispieldatei gehängt.
(https://www.herber.de/bbs/user/115258.xlsm)
Mfg
Christoph
Anzeige
AW: Ribbon Enable/Disable
05.08.2017 12:25:34
mumpel
1. Kleiner Fehler von mir. returnValue muss ByRef sein, nicht ByVal.
2. "returnValue" ist standardmäßig False. Wenn Du es nicht auf True setzt bleibt es False.
Public Sub getEnabled_Button(control As IRibbonControl, ByRef returnValue)
  If ActiveSheet.Name = control.Tag Then
     returnValue = False
  Else
     returnValue = True
  End If
End Sub

VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media

Code erstellt und getestet in Office 16 - mit VBAHTML 12.6.0


Anzeige
AW: Ribbon Enable/Disable
05.08.2017 12:30:50
chris37170
Herzlichen Dank René,
jetzt funktioniert es einwandfrei.
Mfg
Christoph

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige