Microsoft Excel

Herbers Excel/VBA-Archiv

Kontextmenü auf Tabelle1 begrenzen

Betrifft: Kontextmenü auf Tabelle1 begrenzen von: Wolfgang
Geschrieben am: 31.10.2012 06:30:33

Hallo,
folgender Code erstellt ein Kontextmenü mit re. Maustaste; Wie muß ich den Code ändern, damit das Kontextmenü ausschließlich in Tabellenblatt1 erscheint und in den anderen Tabellenblätter wieder das übliche Menü? Läßt sich der Zusatz, der wohl immer im normalen Kontextmenü erscheint und der Formatierung dient, irgendwie abstellen? - Schon jetzt herzlichen Dank für die Rückmeldungen.
Gruß - Wolfgang

Sub EigenesKontextMenüErstellen()
Dim KonBef As CommandBarButton
With Worksheets("Tabelle1") 'das läuft irgendwie nicht
    With CommandBars("Cell")
        While .Controls.Count > 0
            On Error Resume Next
            .Controls(1).Delete
        Wend
        Set KonBef = .Controls.Add(msoControlButton)
        With KonBef
            .Caption = "Import1"
            .FaceId = 480
            .OnAction = "Name des Makros"
        End With
        Set KonBef = .Controls.Add(msoControlButton)
        With KonBef
            .Caption = "Import2"
            .FaceId = 5
            .OnAction = "Name des Makros"
        End With
        Set KonBef = .Controls.Add(msoControlButton)
        With KonBef
            .Caption = "Datenimport stoppen"
            .FaceId = 50
            .OnAction = "Name des Makros"
        End With
        
     End With
        
        
        
    End With
End Sub

  

Betrifft: AW: Kontextmenü auf Tabelle1 begrenzen von: Marc
Geschrieben am: 31.10.2012 07:24:35

Moin!

Das Kontextmenü ist erstmal unabhängig vom gewählten Sheet.
Das bedeutet, das du jedesmal ein Sheet_Change-Ereignis auslösen mußt, in dem du abfragst, ob _ grad sheet 1 gewählt ist oder nicht. Dem entsprechende setzt du das Kontextmenü zurück oder modifizierst es. Zurücksetzten geht mit

Application.CommandBars("Cell").Reset
Gruß, MCO


  

Betrifft: AW: Kontextmenü auf Tabelle1 begrenzen von: Beverly
Geschrieben am: 31.10.2012 08:01:50

Hi Wolfgang,

ins Codemodul DieseArbeitsmappe diesen Code:

Option Explicit

Private Sub Workbook_Open()
   EigenesKontextMenueErstellen
End Sub

Private Sub Workbook_Activate()
   EigenesKontextMenueErstellen
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
   Application.CommandBars("Cell").Reset
End Sub

Private Sub Workbook_Deactivate()
   Application.CommandBars("Cell").Reset
End Sub

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
   If Sh.Name = "Tabelle1" Then
      EigenesKontextMenueErstellen
   Else
      Application.CommandBars("Cell").Reset
   End If
End Sub
und in ein allgemeines Modul diesen Code:
Sub EigenesKontextMenueErstellen()
   Dim KonBef As CommandBarButton
   If ActiveSheet.Name = "Tabelle1" Then
      With CommandBars("Cell")
         While .Controls.Count > 0
             On Error Resume Next
             .Controls(1).Delete
         Wend
         Set KonBef = .Controls.Add(msoControlButton)
         With KonBef
             .Caption = "Import1"
             .FaceId = 480
             .OnAction = "Name des Makros"
         End With
         Set KonBef = .Controls.Add(msoControlButton)
         With KonBef
             .Caption = "Import2"
             .FaceId = 5
             .OnAction = "Name des Makros"
         End With
         Set KonBef = .Controls.Add(msoControlButton)
         With KonBef
             .Caption = "Datenimport stoppen"
             .FaceId = 50
             .OnAction = "Name des Makros"
         End With
      End With
   End If
End Sub

GrußformelBeverly's Excel - Inn


  

Betrifft: Danke Marc und Beverly ! von: Wolfgang
Geschrieben am: 31.10.2012 18:46:23

Hallo Marc und Beverly,
Danke für Eure Rückmeldung und die Hinweise bzw. den Code. Ich habe ihn im Laufe des Tages "eingebaut" und getestet er läuft soweit tadellos. Es taucht allerdings ein Phänomen auf, welches ich noch nicht erklären kann, aber nichts mit diesem Code direkt zu tun haben wird. Wenn ich über einen anderen Code (mit Makrorekorder aufgenommen) Daten aus einer Textdatei importiere -ausglöst über das Kontextmenü-, tut sich mit Deinem Code, Beverly, nichts mehr - selbst ein manuelles Auslösen imponiert VBA nicht. Will das in ruhiger Minute mal mit dem Debugger durchchecken um zu schauen, wo der Bock liegen könnte. Einstweilen nochmals vielen Dank !
Gruß - Wolfgang


 

Beiträge aus den Excel-Beispielen zum Thema "Kontextmenü auf Tabelle1 begrenzen"