Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
608to612
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
608to612
608to612
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Kopierfunktion abschalten in Menüleiste + Kontext

Kopierfunktion abschalten in Menüleiste + Kontext
07.05.2005 18:07:38
Joerg
Hallo,
ich versuche verzweifelt mit dem unten stehenden Modul den Befehl "kopieren" aus dem Menü zu verbannen bzw. zu deaktivieren. Funktioniert aber nicht.
Auch Recherchen im Archiv haben nicht geholfen.
Application.OnKey "^{c}", ""
schaltet zwar die Strg C Funktion aus, aber mit der rechten Maustaste kann man weiterhin den Befehl kopieren ausführen.

Sub AusblendenVonMenuepunkten()
With Application.CommandBars("Worksheet Menu Bar").Controls("Bearbeiten")
.Controls("Kopieren").Visible = False       ' bzw .Enable= False
End With
End Sub

Wer kann mir weiterhelfen ?
Danke Joerg

25
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Kopierfunktion abschalten in Menüleiste + Kont
07.05.2005 18:47:19
Joerg
Hallo,
das Makro

Sub MenüelementDeaktiviere()
MenuBars(xlWorksheet).Menus("Bearbeiten").MenuItems("Kopieren").Enable = False
End Sub

führt zu Fehlermeldung
Fehler 438
Objekt unterstützt diese Eigenschaft oder Methode nicht
was nun ?
Gruss Joerg
AW: Kopierfunktion abschalten in Menüleiste + Kont
07.05.2005 19:05:44
Speedy
Ne andere Idee wäre evtl. , eine Schleife im Hintergrund laufen zu lassen, die schaut ob etwas in die Zwischenablage kopiert wird. Wenn ja, wird der Wert durch "" (also nichts) ersetzt.
Anzeige
AW: Kopierfunktion abschalten in Menüleiste + Kont
07.05.2005 19:11:41
Joerg
Hi,
richtig, aber es laufen schon massig Schleifen im Programm und ich möchte nicht unbedingt noch eine hineinbauen,
die Lösung mit dem
MenuBars(xlWorksheet).Menus("Bearbeiten").MenuItems("Kopieren").Enable = False
erschien mir da wesentlich eleganter.
Gruss Joerg
Da brauchen wir mehr Hilfe von Profis
07.05.2005 19:18:54
Profis
Da fehlt mir leider die Kenntnis warum das nicht funktioniert. Ich habe einen eigenen Menüeintrag mal angelegt (Auch von der Seite) und den konnte man disabled schalten. Ich weiß noch nicht so recht woran das liegt aber vielleicht schaut ja nochmal jmd. hier über den Beitrag der mehr Ahnung hat wie wir :-)
Gruss Speedy
Anzeige
eine Teil-Lösung
08.05.2005 10:03:18
Speedy
Option Explicit
Public cBar As CommandBar

Private Sub Workbook_Open()
On Error Resume Next
'Kontext-Menü zur Bearbeitung von Zellen:
Set cBar = Application.CommandBars("Cell")
'CommandBarButtons deaktivieren:
cBar.Controls("Ausschneiden").Enabled = False
cBar.Controls("Kopieren").Enabled = False
cBar.Controls("Einfügen").Enabled = False
cBar.Controls("Inhalte einfügen...").Enabled = False
Application.CommandBars(1).Controls("Bearbeiten").Controls("Kopieren").Enabled = False
Application.CommandBars(1).Controls("Bearbeiten").Controls("Einfügen").Enabled = False
Application.CommandBars(1).Controls("Bearbeiten").Controls("Ausschneiden").Enabled = False
Application.CommandBars(1).Controls("Bearbeiten").Controls("Inhalte einfügen...").Enabled = False
Application.OnKey "^{c}", ""
Application.OnKey "^{x}", ""
Application.OnKey "^{v}", ""
Application.OnKey "+{DEL}", ""
Application.OnKey "+{INSERT}", ""
'Drag & Drop ausschalten
Application.CellDragAndDrop = False
Application.CommandBars(3).Controls("Kopieren").Enabled = False
Application.CommandBars(3).Controls("Einfügen").Enabled = False
End Sub

Das dann evtl. noch mit dem von Nepumuk kombinieren und dann sollte es gehen
Gruss Speedy ;-)
Anzeige
AW: Kopierfunktion abschalten in Menüleiste + Kont
07.05.2005 19:55:33
Reinhard
Hallo Joerg,

Sub MenüelementDeaktiviere()
CommandBars(1).Controls("Bearbeiten").Controls(2).Enabled = True
End Sub

Gruß
Reinhard
Korrektur
07.05.2005 19:57:13
Reinhard
Hallo Joerg

Sub MenüelementDeaktiviere()
CommandBars(1).Controls("Bearbeiten").Controls("Kopieren").Enabled = False
End Sub

Gruß
Reinhard
AW: Korrektur
07.05.2005 20:19:45
Joerg
Hallo Reinhard,
Leider erhalte ich wieder eine Fehlermeldung wenn ich das unten stehende Makro aufrufe
Laufzeitfehler 91
Objektvariable oder With-Blockvariable nicht festgelegt

Sub MenueElementeDeaktivieren()
'MenuBars(xlWorksheet).Menus("Bearbeiten").MenuItems("Kopieren").Visible = False
CommandBars(1).Controls("Bearbeiten").Controls("Kopieren").Enabled = False
End Sub

Gruss Joerg
Anzeige
AW: Korrektur
07.05.2005 20:34:21
Joerg
Hi,
Application.CommandBars(1).Controls("Bearbeiten").Controls("Kopieren").Enabled = False
dieser Befehl entfernt Kopieren aus der Menüleiste, aber leider bleibt der Befehl bestehen,
wenn ich eine Zelle mit der rechten Maustaste anklicke.
Was nun ?
gruss Joerg
step by step*g
07.05.2005 23:52:34
Reinhard
Hallo Joerg,
ich habe jetzt nur nach dem Kopieren in Bearbeiten geschaut, inzwischen klappt das ja auch bei dir ohne Fehlermeldung?!
Mit dem Kontextmenü der rechtenmaustaste kriegen wir auch noch hin, aber heut nicht mehr .
Gruß
Reinhard
AW: step by step*g
07.05.2005 23:58:26
Hajo_Zi
Hallo Joerg,

Sub Zurueck()
CommandBars("Cell").Reset
End Sub


Sub Entfernen()
CommandBars("Cell").Controls("Kopieren").Enabled = False
End Sub

Gruß Hajo
Das Forum lebt auch von den Rückmeldungen.

"Wer Rechtschreibfehler findet, darf sie behalten!"
Dies gilt auch für Bert.
Anzeige
AW: step by step*g
08.05.2005 00:12:10
Joerg
Hi,
klasse, mit diesem Makro habe ich die Lösung, vielen Dank noch mal!

Sub Entfernen()
Application.CommandBars("Cell").Controls("Einfügen").Enabled = False
Application.CommandBars("Cell").Controls("Kopieren").Enabled = False
etc...
End Sub

Joerg
PS: nur interessehalber, kann man das Pulldownmenue der rechten Maustaste auch ganz abschalten ?
nicht wirkliche Hilfe aber sehr wichtig als Info
08.05.2005 00:25:53
Reinhard
Hallo Joerg,
ja, es geht, wie muss man noch rausfinden, aber schon gelesen habe.
Gruß
Reinhard
AW: step by step*g
08.05.2005 07:12:49
Hajo_Zi
Hallo Joerg,

Sub Aus()
CommandBars("Cell").Enabled = False
End Sub

Gruß Hajo
Das Forum lebt auch von den Rückmeldungen.

"Wer Rechtschreibfehler findet, darf sie behalten!"
Dies gilt auch für Bert.
Anzeige
Danke
08.05.2005 07:55:42
Joerg
Guten Morgen,
Danke an alle die bei der Lösung geholfen haben
Gruss Joerg
AW: step by step*g
08.05.2005 02:03:19
Bert
0 Fehler = 1
Glückwunsch!
mfg Bert
AW: step by step*g
08.05.2005 00:00:55
Joerg
Hi Reinhard,
Du hast recht, es wird spät,
das Problem das Menue auszuschalten wenn die rechte Maustaste gedrückt wird (ausschneiden, kopieren, einfügen etc.) solten wir später lösen.
Besten Dank
Joerg
AW: Kopierfunktion abschalten in Menüleiste + Kontext
07.05.2005 22:48:07
Speedy
Hm... mal anders gesehen...
Was willst du denn vor dem Kopieren schützen?
Ist es eine Zelle?
Wenn ja, dann setz doch einfach nen Blattschutz mit der Option, dass man nur nichtgesperrte Zellen auswählen kann. Deine Formeln funktionieren trotzdem.
Willst du via VBA den Wert ändern, hebste eben den Blattschutz auf ... änderst ... und setzt ihn wieder.
Gruss Speedy
Anzeige
AW: Kopierfunktion abschalten in Menüleiste + Kont
07.05.2005 23:13:01
Joerg
Hi,
das Problem ist, das jeder in die Zellen schreiben darf, wer will auch löschen und neuschreiben. Ich habe in der Vergangenheit nur die Erfahrung gemacht, dass durch die Befehle Kopieren und Verschieben anschliessend Probleme beim Ausdruck eines Berichtes gibt, da Bezugsfehler auftreten.
Daraus folgt : Zellen beschreiben ja
Kopieren/ Verschieben nein
also jwegliche Kopier/ Verschieben Befehle sperren bei gleichzeitiger Möglichkeit die Zellen frei zu beschreiben.
Die Methode
"Willst du via VBA den Wert ändern, hebste eben den Blattschutz auf ... änderst ... und setzt ihn wieder."
benutzte ich schon, ist für mein Problem jedoch nicht geeignet
Gruss Joerg
Anzeige
Das leuchtet natürlich ein ...
08.05.2005 08:07:29
Speedy
Das is natürlich ein Problem ...
Also bleiben wir doch bei der Variante, das alles abgeschaltet wird.
Was fehlt denn noch?
Möglichkeiten:
- [Strg] + [C]
- [Bearbeiten][Kopieren]
- Symbol Kopieren
- Menü von rechter Maustaste
- direkt mit der Maus anklicken und Verschieben bzw. kopieren
Auch wenn viele Schleifen im Hintergrund laufen, vielleicht sollte man doch noch mal darüber nachdenken, ob es nicht sinnvoll wäre, den Wert der Zwischenablage zu ändern. Wobei ich auch nicht weiß, ob man nicht trotzdem das einfach kopieren bzw. verschieben kann.
Gruss Speedy
Anzeige
Kontextmenü abschalten geht so:
08.05.2005 08:31:58
Speedy
Moin Moin,
Folgendes kommt bei "DieseArbeitsmappe" rein (oder auch bloß einzelne Blätter):
Option Explicit
Public cBar As CommandBar

Private Sub Workbook_Open()
On Error Resume Next
'Kontext-Menü zur Bearbeitung von Zellen:
Set cBar = Application.CommandBars("Cell")
'CommandBarButtons deaktivieren:
cBar.Controls("Ausschneiden").Enabled = False
cBar.Controls("Kopieren").Enabled = False
cBar.Controls("Einfügen").Enabled = False
cBar.Controls("Inhalte einfügen...").Enabled = False
End Sub

Dann sollte es funktionieren ;-)
Gruss Speedy
AW: Kontextmenü abschalten geht so:
08.05.2005 08:42:50
Speedy
Gut, ich geb ja zu das ich hinterhänge.
SORRY
Hab da oben nich mehr durchgesehen was schon existiert und was nich. Wer lesen kann is klar im Vorteil.
Aber was jetzt noch fehlt, ist das abschalten vom kopieren wenn man mit der linken Maustaste und gedrückter [Strg]-Taste den Zellinhalt kopiert. Oder habt ihr das auch gelöst?
Gruss Speedy
AW: Kontextmenü abschalten geht so:
08.05.2005 09:40:46
Nepumuk
Hallo Speedy,
das reicht aber nicht. Alleine kopieren kommt in xl2000 in 31 verschiedenen Symbolleisten vor. Du musst alle disablen. Versuch es mal so:
Im Klassenmodul der Mappe:


Option Explicit
Private Sub Workbook_Activate()
    With Application
        .CellDragAndDrop = False
        .OnKey "^x", ""
        .OnKey "^c", ""
        .OnKey "^v", ""
        .OnKey "+{DEL}", ""
        .OnKey "+{INSERT}", ""
        .OnDoubleClick = "prcDoNothing"
        .CommandBars("Toolbar List").Enabled = False
        .CommandBars("Clipboard").Enabled = False
'        .CommandBars.DisableCustomize = True 'ab Excel 2002
    End With
    Call prcEnablaDisableControls(False, 19)
    Call prcEnablaDisableControls(False, 21)
    Call prcEnablaDisableControls(False, 22)
    Call prcEnablaDisableControls(False, 755)
End Sub
Private Sub Workbook_Deactivate()
    With Application
        .CellDragAndDrop = True
        .OnKey "^x"
        .OnKey "^c"
        .OnKey "^v"
        .OnKey "+{DEL}"
        .OnKey "+{INSERT}"
        .OnDoubleClick = ""
        .CommandBars("Toolbar List").Enabled = True
        .CommandBars("Clipboard").Enabled = True
'        .CommandBars.DisableCustomize = False 'ab Excel 2002
    End With
    Call prcEnablaDisableControls(True, 19)
    Call prcEnablaDisableControls(True, 21)
    Call prcEnablaDisableControls(True, 22)
    Call prcEnablaDisableControls(True, 755)
End Sub


In einem Standardmodul:


Option Explicit
Public Sub prcEnablaDisableControls(bolOnOff As Boolean, lngId As Long)
    Dim myCommandBar As CommandBar, myCommandBarControl As CommandBarControl
    On Error Resume Next
    For Each myCommandBar In Application.CommandBars
        Set myCommandBarControl = myCommandBar.FindControl(ID:=lngId, Recursive:=True)
        If Not myCommandBarControl Is Nothing Then myCommandBarControl.Enabled = bolOnOff
    Next
    Set myCommandBarControl = Nothing
End Sub
Public Sub prcDoNothing()
End Sub


Gruß
Nepumuk
AW: Kontextmenü abschalten geht so:
08.05.2005 15:40:14
Joerg
Hallo,
erstmal Dank an alle, jetzt muss ich die Lösungen in Ruhe durchsehen und die Sachen rausfischen, die für mich am wichtigsten sind.
Die letzte Frage die mir bleibt , ist die Autofill Funktion bei einer der Lösungen mit ausgeschaltet (ähnlich wie Drag und Drop ?
Nochmal Dank an alle
Gruss Joerg

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige