CommandBars anpassen

Bild

Betrifft: CommandBars anpassen
von: Marc
Geschrieben am: 21.03.2005 12:28:31
Hallo Exceler,
ich möchte in meiner Arbeitsmappe gewisse Menüpunkte deaktivieren und beim Schließen wieder aktivieren. Wie kann ich das machen?
Danke vorab.
Marc

Bild

Betrifft: AW: CommandBars anpassen
von: Oberschlumpf
Geschrieben am: 21.03.2005 13:00:19
Hi Marc
Mit Hilfe von www.google.de und diesem Suchtext: "menü deaktivieren site:herber.de" werden sehr viele Treffer zu Deiner Frage angezeigt.
Konnte ich helfen?
Ciao
Thorsten
Bild

Betrifft: AW: CommandBars anpassen
von: Marc
Geschrieben am: 21.03.2005 13:49:09
Hallo Thorsten,
das hat mich doch schon einen großen Schritt nach vorn gebracht. Kannst du mir auch sagen, wie ich einzelne Befehle deaktiviere? Und eine weitere Frage: Wie kann ich einzelne Befehle in dem Menü disablen, wenn ich in der Tabelle die rechte Maustaste drücke?
Danke dir
Marc
Bild

Betrifft: AW: CommandBars anpassen
von: Oberschlumpf
Geschrieben am: 21.03.2005 13:57:01
Hi Marc
zu einzelne Menü??Befehle deaktivieren:
diese Frage ist schon in meiner ersten Antwort beantwortet. In google.de mit oben angegebenen Suchtext wirst Du fündig. Du musst halt den Code nur anpassen.
zu rechte Maustaste:
auch hier gibts in google.de viel Text mit dem Suchtext "Kontextmenü"
Hoffem dass ich auch diesmal wieder helfen konnte.
Ciao
Thorsten
Bild

Betrifft: AW: CommandBars anpassen
von: Marc
Geschrieben am: 21.03.2005 14:15:45
Hi Thorsten,
mir fehlte die richtige Bezeichnung für "Kontextmenü". Für einzelne Menüpunkte ist das "Menübefehl"? Unter diesem Stichwort habe ich allerdings nichts hilfreiches gefunden.
bzw. um was muss ich die Zeile "application.CommandBars("Worksheet Menu Bar").Controls("Extras")" erweitern??
Danke dir
Marc
Bild

Betrifft: AW: CommandBars anpassen
von: Oberschlumpf
Geschrieben am: 21.03.2005 14:23:40
Hi Marc
Um das Menü EXTRAS zu erweitern, shcau Dir mal dieses Bsp an:
https://www.herber.de/index.html?https://www.herber.de/mailing/110100h.htm
Hier wird zwar gleich ein ganzes Menü hinzugefügt, aber es wird auch erklärt, wie das mit nur einzelnen Befehlen geht.
Der Suchtext in google.de war "menü extras site:herber.de"
Konnte ich helfen?
Ciao
Thorsten
Bild

Betrifft: AW: CommandBars anpassen
von: Marc
Geschrieben am: 21.03.2005 16:02:11
Hallo Thorsten,
klappt alles. Kannst du mir noch sagen, wie das Menü heißt, wenn ich mit der rechten Maustaste auf eine Zeile und auf eine Spalte klicke?
Danke vorab
Marc
Bild

Betrifft: AW: CommandBars anpassen
von: Nepumuk
Geschrieben am: 21.03.2005 20:02:55
Hallo Mark,
der Name der Commandbar spielt eigentlich keine Rolle. Wichtig ist die ID des Controls. Ein Beispiel für das ein- und ausschalten von "Ausschneiden" in allen Commandbars:


Option Explicit
Private Sub prcControlEnableDisable(intId As Integer, bolStatus As Boolean)
    Dim myCommandBar As CommandBar, myCommandBarControl As CommandBarControl
    For Each myCommandBar In CommandBars
        Set myCommandBarControl = myCommandBar.FindControl(ID:=intId, Recursive:=True)
        If Not myCommandBarControl Is Nothing Then myCommandBarControl.Enabled = bolStatus
    Next
End Sub
Public Sub prcOff()
    Call prcControlEnableDisable(21, False)
End Sub
Public Sub prcOn()
    Call prcControlEnableDisable(21, True)
End Sub


Damit du an die Nummern kommst, nimm eine leere Mappe und lasse folgendes Makro laufen:


Option Explicit
Public Sub create_Id_list()
    Dim myCommandBarControl As CommandBarControl, myCommandBar As CommandBar
    Dim intColumn As Integer, intCount As Integer, lngRow As Long, intCbCount As Integer
    Application.ScreenUpdating = False
    lngRow = 1
    Cells.ClearContents
    For Each myCommandBar In Application.CommandBars
        intCbCount = intCbCount + 1
        Cells(lngRow, 1) = myCommandBar.Name
        Cells(lngRow, 2) = myCommandBar.NameLocal
        With Cells(lngRow, 3)
            .Value = intCbCount
            .Font.Bold = True
        End With
        For intCount = 1 To myCommandBar.Controls.Count
            With myCommandBar.Controls(intCount)
                 Cells(lngRow + intCount, 1) = .ID
                 Cells(lngRow + intCount, 2) = .Caption
            End With
        Next intCount
        lngRow = lngRow + intCount + 1
    Next
    On Error Resume Next
    For lngRow = 2 To Cells(65536, 1).End(xlUp).Row
        If IsNumeric(Cells(lngRow, 1)) And Trim(Cells(lngRow, 1)) <> "" Then
            intColumn = 3
            For Each myCommandBarControl In Application.CommandBars(Cells(Cells(lngRow, 1).End(xlUp).Row, 1).Value).Controls(Cells(lngRow, 2).Value).Controls
                If Err.Number <> 0 Then GoTo nextone
                With myCommandBarControl
                    Cells(lngRow, intColumn) = .ID
                    Cells(lngRow, intColumn + 1) = .Caption
                End With
                intColumn = intColumn + 2
            Next
        End If
nextone:
    Err.Clear
    Next
    Columns.AutoFit
    Application.ScreenUpdating = True
End Sub


Der Code ich nicht sehr schön (der stammt von 1992, da konnte ich es noch nicht besser), aber er funktioniert.
Gruß
Nepumuk
Bild

Betrifft: AW: CommandBars anpassen
von: Marc
Geschrieben am: 22.03.2005 10:23:57
Hallo Nepumuk,
danke für das Makro. Das hat mich nach vorn gebracht. Jetzt muss ich nochmal schauen, wie dich das in meinen Code einbringen kann.
Vielen Dank
Marc
 Bild

Beiträge aus den Excel-Beispielen zum Thema "CommandBars anpassen"