Private Sub Workbook_Activate()
Dim cb As CommandBar
For Each cb In Application.CommandBars
If cb.Name <> "Standard" And cb.Name <> "Formatting" And cb.Name <> "PivotTable" And cb. _
Name <> "Worksheet Menu Bar" And cb.Name <> "Cell" Then cb.Enabled = False
Next cb
End Sub
Private Sub Workbook_Deactivate()
Dim cb As CommandBar
For Each cb In Application.CommandBars
cb.Enabled = True
Next cb
End Sub
Kann ich alle Schaltflächenleisten die nicht den von mir definierten entsprechen deaktivieren. D.h. ich schränke die Möglichkeiten der Excel Applikation in der mein Workbook geöffnet ist, drastisch ein. Das möchte ich jedoch nicht unbedingt. Vielmehr geht es mir darum, Schaltflächenleisten, die von den meisten Usern (m.E. unnötigerweise) aus Gewohnheit aktiviert sind (z.B. „Zeichnen“) auszublenden, sobald meine Datei geöffnet wird.
Mein Ansatz war:
If cb.Name = "Chart" Or cb.Name = "Reviewing" Or cb.Name = "Drawing" or cb.Name = “Borders” Then cb.visible = False
Also nur die ausblenden, die ich auf meiner schwarzen Liste habe. Das hat nicht funktioniert. Der Debugger hat cb.visible = False beanstandet.
Ich präferiere den Weg über visible gegenüber enable auch aus dem Grund, daß viel Symbole grau werden, wenn man mit enable = false die Symbolleisten beeinflußt und das ein Gefühl der Einschränkung vermittelt. De facto geht es mir nur darum den Monitorplatz für die relevanten Daten zu maximieren.
Auch hatte ich versucht, die Begriffe meiner Liste durch zu loopen. D.h. nicht jeden Begriff durch „Or“ abdecken, sondern eine Liste im VBA Editor (nicht auf einem Blatt) zu definieren (Array?) durch das der Code mit For Each durchgeht. Bei einem Treffer soll der Status dann auf visible = false gehen. Sobald das Workbook deaktiviert ist, sollen alle Symbolleisten wieder erscheinen, die der User vorher auch schon hatte.
Liste der auszublendenden Symbolleisten:
Chart
Reviewing
PDFMaker 7.0
Drawing
Formula Auditing
Visual Basic
Borders
Picture
Ist das Euer Meinung nach möglich. Bei allen Recherchen hier im Forum habe ich meist nur Codes mit „enable“ gefunden und auch leider kein Array, welches ich anwenden konnte.
Vielen Dank und Gruß,
Andreas
Sub CommandbarsAusblenden()
Dim cb As CommandBar
On Error Resume Next
For Each cb In Application.CommandBars
If cb.Name <> "Standard" And cb.Name <> "Formatting" And cb.Name <> "PivotTable" And cb. _
Name <> "Worksheet Menu Bar" Then cb.Visible = False
Next cb
End Sub
Werden die CommandBars so gestaltet wie ich es vorgebe. Aber ich möchte, daß die alte CommandBar Struktur wiederhergestellt wird beim Schließen der Datei, die vorgenannten Code beinhaltet.
Über:
Sub test_close2()
Dim cb As CommandBar
On Error Resume Next
For Each cb In Application.CommandBars
'cb.Visible = False
If cb.Name <> "Standard" And cb.Name <> "Formatting" And cb.Name <> "PivotTable" And cb.Name _
<> "Worksheet Menu Bar" Then cb.Visible = True
Next cb
End Sub
funktioniert das nicht. Es werden alle Commandbars eingeblendet. Wenn ich mit Enable arbeite, dann kann ich beim Schließen der Datei über „cb.Enabled = True“ die alte Struktur wiederherstellen. Aber mit visible funktioniert das nicht.
Denkbar ist u.U. bei Öffnung der Datei prüfen, welche CommandBars „visible“ sind, diese dann im VBA Editor speichern (als CustomListe oder Array?) und beim Schließen entsprechend dieser Liste die visible Attribute wiederherstellen.
Über:
Sub CommandBarAuflistung_2()
Dim oBar As CommandBar
Dim iRow As Integer
iRow = 1
For Each oBar In Application.CommandBars
iRow = iRow + 1
If oBar.Visible = True Then
Cells(iRow, 1) = oBar.Name
End If
Next oBar
End Sub
erreiche ich eine Listung. Es übersteigt aber meine bisherigen Fähigkeiten, diese Liste nicht auf ein Blatt sondern VBA intern zu speichern.
Was meinst Du/ Ihr? Ist das Vorhaben realisierbar?
Vielen Dank und Gruß für eine Rückmeldung.
Grüße, Andreas
Wenn ich mit Enable arbeite, ...
Warum tust du es dann nicht?
Zu einfach?
Gruß
Rudi