Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1268to1272
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 nur bei Bestimmten Wert einblenden

Ribbon nur bei Bestimmten Wert einblenden
marco
Hallo,
Ich habe ein neues Ribbon erstellt.
Jetzt soll das Ribbon aber nur eingeblendet werden, wenn eine Datei geöffnet wird, indem in der Celle If Cells(2, 1) = "Bestelltyp" Or Cells(2, 1) = "Stammdaten" Then .... erstelle myCommandBarPopup... seither ( Excel XP)
Seither (Excel XP) habe ich das über ein Add-In gesteuert und habe das ereignis. Private Sub Anwendung_WorkbookActivate verwendet.
Gibt es eine Möglichkeit ein Ribbon so zu steuren?
Gruß
Marco
AW: Ribbon nur bei Bestimmten Wert einblenden
20.06.2012 16:14:52
mumpel
Hallo!
Über das onLoad-Ereignis ist das möglich. Aber nur wenn sich das Ribbon in einem Add-In befindet (Ribbon über RibbonX-Programmierung erstellt) und in diesem ein globales WorkbookActivate-Ereignis vorhanden ist (muss im Add-In über eine Klassenprogrammierung erfolgen. Beispiele im Forenarchiv).
RibbonX-Workshop (Offline-Version)
RibbonX-Workshop (Online-Version)
---------------------------------
Wenn Du das Ribbon/Tab aber über "Menüband anpassen" erstellt hast, dann hast Du keinen programmatischen Zugriff auf das benutzerdefinierte Tab.
Gruß, René
Gruß, René
Anzeige
AW: Ribbon nur bei Bestimmten Wert einblenden
20.06.2012 16:35:38
marco
Hallo René,
ich habe leider noch wenig Erfahrung mit den Ribbon.
folgendes habe ich in ein Add-In eingefügt.
In ein modul
Option Explicit
Public objRibbon As IRibbonUI
Public Sub rx_onload(Ribbon As IRibbonUI)
Set objRibbon = Ribbon
End Sub
Über den Editor dem Add-In zugeordnet.
customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui" onLoad="onload"
ribbon startFromScratch="false"
tabs>
tab id="tab01" label="PT-Tools"
group>
Über ein Klassenmodul
Public WithEvents Anwendung As Application
Public objRibbon As IRibbonUI
Private Sub Anwendung_WorkbookActivate(ByVal Wb As Workbook)
Dim a1a As String, a1n As String, Sh As Shape, strFind As String, rngFind As Range
Dim lngStart As Long, lngEnd As String, spalten As Integer
' button in menueleiste erstellen
If Cells(2, 1) = "Bestelltyp" Or Cells(2, 1) = "Stammdaten" Then
Call prcCreateButton (Alter befehl XP) ==== Ab hier müsste ich das on load ereigniss aufrufen  _
aber wie?
etc..
End Sub

Anzeige
AW: Ribbon nur bei Bestimmten Wert einblenden
20.06.2012 16:45:31
mumpel
"Call prcCreateButton" ersetzen durch "objRibbon.Invalidate", also das Ribbon bei jedem Aktivieren einer Arbeitsmappe neu initialisieren.
AW: Ribbon nur bei Bestimmten Wert einblenden
21.06.2012 14:55:35
marco
Hallo René,
ich habe deine Info auf folgende weise eingefügt. Und habe trotdem noch ein problem.
In einem Klassenmodull die änderung
Option Explicit
Public WithEvents Anwendung As Application
Public Sub Anwendung_WorkbookActivate(ByVal Wb As Workbook)
Dim a1a As String, a1n As String, Sh As Shape, strFind As String, rngFind As Range
Dim lngStart As Long, lngEnd As String, spalten As Integer
' button in menueleiste erstellen
If Cells(2, 1) = "Bestelltyp" Or Cells(2, 1) = "Stammdaten" Then
objRibbon.Invalidate
etc..
End Sub
In ein Modul
Option Private Module
Option Explicit
Public objRibbon As IRibbonUI
Public Sub Onload_D4XA(ribbon As IRibbonUI)
Set objRibbon = ribbon
End Sub

Public Sub getVisible_Tab1(control As IRibbonControl, ByRef visible)
If Cells(2, 1) = "Bestelltyp" Or Cells(2, 1) = "Stammdaten" Then visible = True  ' ? das  _
funktioniert leider nicht. welche abfrage soll ich hier einfügen mit
End Sub
Im editor






Anzeige
AW: Ribbon nur bei Bestimmten Wert einblenden
21.06.2012 14:59:22
marco
Hallo René,
ich habe deine Info auf folgende weise eingefügt. Und habe trotdem noch ein problem.
Nur mit objRibbon.Invalidate habe ich einen Laufzeitfehler.
Deshalb habe ich noch für den Tab1 ein getVisible eingefügt.
In der If abfrage fehlt mir etwas.
In einem Klassenmodull die änderung
Option Explicit
Public WithEvents Anwendung As Application
Public Sub Anwendung_WorkbookActivate(ByVal Wb As Workbook)
Dim a1a As String, a1n As String, Sh As Shape, strFind As String, rngFind As Range
Dim lngStart As Long, lngEnd As String, spalten As Integer
' button in menueleiste erstellen
If Cells(2, 1) = "Bestelltyp" Or Cells(2, 1) = "Stammdaten" Then
objRibbon.Invalidate
etc..
End Sub
In ein Modul
Option Private Module
Option Explicit
Public objRibbon As IRibbonUI
Public Sub Onload_D4XA(ribbon As IRibbonUI)
Set objRibbon = ribbon
End Sub

Public Sub getVisible_Tab1(control As IRibbonControl, ByRef visible)
If Cells(2, 1) = "Bestelltyp" Or Cells(2, 1) = "Stammdaten" Then visible = True  ' ? das  _
funktioniert leider nicht. welche abfrage soll ich hier einfügen mit
End Sub
Im editor
customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui" onLoad="Onload_D4XA">
ribbon>
tabs>
tab id="tb0" label="Contoso" insertAfterMso="TabHome" getVisible="getVisible_Tab1" >
group id="grp03" label="Monatsauswahl" >
button id="tgb14" label="Schichten" imageMso="DesignXml"
onAction = "schichten_onAction" size="large"/>
/group>
Anzeige
AW: Ribbon nur bei Bestimmten Wert einblenden
21.06.2012 20:43:46
mumpel
Ein Beispiel.
In "DieseArbeitsmappe":
In ein allgemeines Modul:
In ein Klassenmodul mit dem Namen "clsPhone":
VBa-projekt sollte mit einem Kennwort geschützt werden.
AW: Ribbon nur bei Bestimmten Wert einblenden
26.06.2012 16:13:59
marco
Hallo René,
anbei die komplett funktionierende lösung. Ribbon über Add-in an einem ereignis verknüpft.
Diese Arbeitsmappe
Private Sub Workbook_Open()
Call objVerweis
End Sub

in ein Modul
Public objRibbon As IRibbonUI
Public objRibbonVisible As Boolean
Public Anwendungsobjekt As New Anwendungsklasse
Sub objVerweis()
Set Anwendungsobjekt.Anwendung = Application
End Sub
Public Sub Onload_D4XA(ribbon As IRibbonUI)
Set objRibbon = ribbon
End Sub

Public Sub GetVisible_tab1(control As IRibbonControl, ByRef Visible)
If objRibbonVisible Then Visible = True
End Sub
in ein klassenmodul
Public WithEvents Anwendung As Application
Public Sub Anwendung_WorkbookActivate(ByVal Wb As Workbook)
' button in menueleiste erstellen
If Cells(2, 1) = "Bestelltyp" Or Cells(2, 1) = "Stammdaten" Then
objRibbonVisible = True
Else
objRibbonVisible = False
End If
objRibbon.Invalidate
End Sub
Fertig funkt
Gruß und danke
marco
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige