Zell-Kontextmenü 'Einfügen' manipulieren
14.04.2010 12:20:49
NoNet
Hallo Gordon,
eins vorweg : Ich halte es wie Tino nicht für ratsam, den Befehl "Einfügen" des Zell-Kontextmenüs zu verändern. Stattdessen würde ich eher den Befehl "Werte einfügen" in das Kontextmenü mit aufnehmen und ggf. wieder entfernen :
Sub KontextMenueWerteEinfuegenHinzufuegen()
'Mit diesem Makro wird Funktion "Werte einfügen" in das Zell-Kontextmenüs hinzugefügt :
Dim cnt As CommandBarControl
Set cnt = Application.CommandBars("Cell").FindControl(ID:=370) 'ID370 = "Werte einfügen"
If cnt Is Nothing Then
Application.CommandBars("Cell").Controls.Add ID:=370, temporary:=True 'Werte einfügen
End If
End Sub
Sub KontextMenueWerteEinfuegenEntfernen()
'Mit diesem Makro wird Funktion "Werte einfügen" aus dem Zell-Kontextmenü entfernt :
Dim cnt As CommandBarControl
For Each cnt In Application.CommandBars("Cell").Controls
If cnt.ID = 370 Then cnt.Delete 'ID370 = "Werte einfügen"
Next
End Sub
Falls Du aber partout darauf bestehst, den Eintrag "Einfügen" im Kontextmenü auf die Funktion "Werte einfügen" umzubiegen, kannst Du das z.B. folgendermaßen lösen und wieder rückgängig machen :
Sub KontextMenueEinfuegenManipulieren()
'Mit diesem Makro wird Funktion "Einfügen" des Zell-Kontextmenüs geändert :
Dim cnt As CommandBarControl
Set cnt = Application.CommandBars("Cell").FindControl(ID:=22) 'ID22 = "Einfügen"
If Not cnt Is Nothing Then
'führt das Makro "InhalteEinfuegenWerte" aus, wenn auf "Einfügen" geklickt wird :
cnt.OnAction = "InhalteEinfuegenWerte"
Else
MsgBox "Menüpunkt 'Einfügen' icht im Kontextmenü gefunden !"
End If
End Sub
Sub KontextMenueEinfuegenResetten()
'Mit diesem Makro wird wieder die Standard-Funktion hergestellt :
Dim cnt As CommandBarControl
Set cnt = Application.CommandBars("Cell").FindControl(ID:=22)
If Not cnt Is Nothing Then cnt.OnAction = ""
End Sub
Sub InhalteEinfuegenWerte()
On Error Resume Next
Selection.PasteSpecial xlPasteValues 'Inhalte einfügen - Werte
End Sub
Gruß, NoNet