Fehler bei Aufruf von neuem Kontextmenü
#1
Hallo wertes Forum,

ich bin mal wieder am Probieren und komme bei einem Fehler nicht weiter.
Mit dem folgenden Code erstelle ich ein neues Kontextmenü (vielen Dank an Hajo für die Vorlage auf seiner Homepage):
Code:
Sub Worksheet_Activate()

Dim Ini As Integer
Dim oBtn As CommandBarButton
' Menü löschen


With CommandBars("Cell")
    For Ini = .Controls.Count To 1 Step -1
        CommandBars("Cell").Controls(Ini).Delete
    Next Ini
   
'    With .Controls.Add(Type:=msoControlPopup)
        With .Controls.Add
'            .FaceId = 330                           ' Icon 1. Untermenü
            .Caption = "&Position Löschen"                ' Beschriftung 1. Untermenü
            .OnAction = "PosLoesch"                ' Makro 1. untermenü
        End With
        With .Controls.Add
'            .FaceId = 330                           ' Icon 1. Untermenü
            .Caption = "&Position Verschieben"                ' Beschriftung 1. Untermenü
            .OnAction = "PosVersch"                ' Makro 1. untermenü
        End With
'    End With
End With

End Sub


Private Sub Worksheet_Deactivate()

CommandBars("Cell").Reset                   ' Kontextmenü zurücksetzen

End Sub


Sub PosLoesch()

MsgBox "gelöscht"

End Sub

Sub PosVersch()

MsgBox "verschoben"

End Sub

Das Kontextmenü erscheint wir gewünscht, aber der .OnAction-Befehl löst einen Fehler "Makro... kann nicht ausgeführt werden. Das Makro ist möglicherweise in dieser Arbeitsmappe nicht verfügbar, oder alle Makros wurden deaktiviert." aus.
Beides würde ich ausschließen...
Beispieldatei habe ich angehängt.

Wo ist mein Fehler?

Und falls jemandem noch eine Verbesserung einfällt, gerne her damit.

Vielen Dank,
Lutz

.xlsm   Beispiel Kontextmenü.xlsm (Größe: 25,47 KB / Downloads: 3)
Antworten Top
#2
moin,

die beiden Makros

PosLösch und PosVersch

gehören in ein Modul oder du musst beim Aufruf den Tabellenblattnamen vorsetzen

mfg Tom
[-] Folgende(r) 1 Nutzer sagt Danke an Crazy Tom für diesen Beitrag:
  • Lutz Fricke
Antworten Top
#3
Ahhh.. Blush
Mit .OnAction = "Tabelle1.PosVersch" funzt's

Vielen Dank für die Hilfe,
Lutz
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste