Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Einfügen verhindern

Einfügen verhindern
05.03.2007 11:48:00
Goofi
Liebe Mitstreiter,
in einer EXCEL-Datei soll das Einfügen von Zwischenspeicherinhalten aufgrund von Kopieren oder Verschieben verhindert werden und der gesamte Vorgang einschließlich dem evtl. erfolgten Ausschneiden rückgängig gemacht werden.
Hierzu habe ich in VBA den Befehl in den Tabellenobjektbereich der Datei eingetragen:
Private Sub object_BeforeDropOrPaste(ByVal Cancel As MSForms.ReturnBoolean, _
ByVal Action As fmAction, ByVal Data As DataObject, ByVal X As Single, _
ByVal Y As Single, ByVal Effect As MSForms.ReturnEffect, ByVal Shift As fmShiftState)
FuellVerwHinweisMeld6
Application.Undo
End Sub
Leider funktioniert das Einfügen trotzdem. Woran liegt das?
Evtl. kann auch folgender Befehl sinnvoll sein, der aber so auch nicht funktioniert:
Private Sub object_BeforeDragOver(ByVal Cancel As MSForms.ReturnBoolean, _
ByVal Data As DataObject, ByVal X As Single, ByVal Y As Single, _
ByVal DragState As fmDragState, ByVal Effect As MSForms.ReturnEffect, _
ByVal Shift As fmShiftState)
FuellVerwHinweisMeld6
Application.Undo
End Sub
Vielen Dank für Euere Hilfe, Goofi
Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Einfügen verhindern
05.03.2007 12:39:00
Oberschlumpf
Na Goofi
Würde es dir helfen, wenn du die Menüeinträge Bearbeiten/(Kopieren,Ausschneiden,Einfügen) deaktivierst und mit Hilfe von Application.OnKey auch die Tastenkombis Strg-(X,C,V) auch deaktivierst?
Natürlich musst du beim Verlassen deiner Datei alles wieder zurück setzen.
Konnte ich helfen?
Ciao
Thorsten
Anzeige
AW: Einfügen verhindern
05.03.2007 13:05:29
Goofi
Servus Thorsten,
Deine Idee wäre nicht so gut, denn es sind sicherlich gleichzeitig mehrere Excel-Dateien in einer Excel-Anwendung geöffnet, so dass wohl in keiner Datei mehr kopiert, ausgeschnitten, eingefügt werden könnte.
Es darf sich somit nur auf die eine betroffene Datei beziehen.
Vielen Dank für weitere Hinweise.
Gruß, Goofi
Anzeige
AW: Einfügen verhindern
05.03.2007 14:01:55
Mag
Hi,
Ansatz:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Application.CutCopyMode = False
End Sub

Gruss
AW: Einfügen verhindern
05.03.2007 17:32:00
Goofi
Servus Mag,
vielen, vielen Dank, funktioniert gut.
Gruß, Goofi
AW: Einfügen verhindern
05.03.2007 14:28:00
Mag
... und damit von anderer Excel-Datei oder anderem Tabellenblatt nix ins aktuelle Sheet kopiert werden kann:
Private Sub Worksheet_Activate()
Application.CutCopyMode = False
End Sub

Gruss
Anzeige
AW: Einfügen verhindern
05.03.2007 14:42:00
Oberschlumpf
Hi Goofi
a) die Lösung von Mag finde ich nicht schlecht
b) meine Lösung funktioniert auch bei mehreren, geöffneten Excel-Dateien.
Und zwar musst du dann in "Deine Datei" in den Ereignissen
Open
Activate
alles DE-aktivieren
und in den Ereignissen von "Deine Datei"
BeforeClose
Deactivate
alles wieder aktivieren.
Das es geht, weiß ich, da ich es selbst so schon mal benötigte, dass in einer bestimmten Datei weder Blätter, noch Zellen, Zeilen und Spalten hinzugefügt oder gelöscht werden durften.
Vielleicht klapt es ja jettz auch bei dir?
Ciao
Thorsten
Anzeige
AW: Einfügen verhindern
05.03.2007 17:35:00
Goofi
Servus Thorsten,
stimmt, Deine Lösung funktioniert auch.
Vielen, vielen Dank Dir.
Gruß, Goofi
;
Anzeige
Anzeige

Infobox / Tutorial

Einfügen in Excel verhindern


Schritt-für-Schritt-Anleitung

Um das Einfügen von Inhalten in Excel zu verhindern, kannst Du VBA verwenden. Folge diesen Schritten:

  1. Öffne Deine Excel-Datei und drücke ALT + F11, um den VBA-Editor zu starten.

  2. Wähle im Projekt-Explorer das entsprechende Arbeitsblatt aus.

  3. Füge den folgenden Code in den Code-Bereich des Arbeitsblatts ein:

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
       Application.CutCopyMode = False
    End Sub
  4. Schließe den VBA-Editor und teste die Änderungen in Deiner Excel-Datei.


Häufige Fehler und Lösungen

Ein häufiger Fehler ist, dass der Code nicht im richtigen Arbeitsblatt platziert wird. Stelle sicher, dass Du den Code im richtigen Arbeitsblatt eingibst, wo das Einfügen verhindert werden soll.

Ein anderer Fehler kann auftreten, wenn mehrere Excel-Dateien geöffnet sind. In diesem Fall kannst Du den folgenden Code verwenden, um das Einfügen auch in anderen geöffneten Dateien zu verhindern:

Private Sub Workbook_Open()
    Application.CutCopyMode = False
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Application.CutCopyMode = False
End Sub

Dieser Code sorgt dafür, dass der Kopiermodus in der gesamten Arbeitsmappe deaktiviert wird, wenn die Datei geöffnet oder geschlossen wird.


Alternative Methoden

Eine weitere Methode, um das Einfügen zu verhindern, ist die Deaktivierung der Menüeinträge für Bearbeiten. Dies kannst Du mit dem folgenden Code erreichen:

Sub DeactivateEditMenu()
    Application.CommandBars("Edit").Enabled = False
End Sub

Sub ActivateEditMenu()
    Application.CommandBars("Edit").Enabled = True
End Sub

Führe DeactivateEditMenu beim Öffnen der Datei aus und ActivateEditMenu beim Schließen, um das Einfügen zu verhindern.


Praktische Beispiele

Hier sind einige praktische Beispiele:

  • Verhindern des Einfügens bei Auswahländerung: Der bereits erwähnte Code, der Application.CutCopyMode = False verwendet, deaktiviert das Einfügen sofort, wenn Du die Auswahl änderst.

  • Deaktivieren der Tastenkombinationen: Du kannst auch die Tastenkombinationen für Kopieren, Ausschneiden und Einfügen deaktivieren, indem Du Application.OnKey verwendest. Hier ein Beispiel:

    Sub DisableShortcuts()
       Application.OnKey "^c" ' Strg + C
       Application.OnKey "^x" ' Strg + X
       Application.OnKey "^v" ' Strg + V
    End Sub

Tipps für Profis

  • Speichere Deine Arbeit regelmäßig: Wenn Du mit VBA arbeitest, kann es manchmal zu unerwarteten Fehlern kommen. Speichere Deine Arbeit regelmäßig, um Datenverlust zu vermeiden.
  • Teste den Code in einer Kopie der Datei: Bevor Du Änderungen an Deiner Hauptdatei vornimmst, teste den VBA-Code in einer Kopie der Datei, um sicherzustellen, dass alles wie gewünscht funktioniert.
  • Nutze die Ereignisse klug: Du kannst verschiedene Ereignisse wie Workbook_Open oder Worksheet_Activate nutzen, um Deine VBA-Makros gezielt auszuführen.

FAQ: Häufige Fragen

1. Kann ich das Einfügen für bestimmte Zellen deaktivieren?
Ja, Du kannst spezifische Zellen auswählen und den Code nur auf diese Zellen anwenden, indem Du die Bedingung im Worksheet_SelectionChange-Ereignis anpasst.

2. Was passiert, wenn ich mehrere Arbeitsblätter habe?
Wenn Du mehrere Arbeitsblätter hast, musst Du den VBA-Code in jedes Arbeitsblatt einfügen oder eine allgemeine Regel im Workbook-Modul verwenden, um das Einfügen auf alle Blätter anzuwenden.

3. Wie kann ich Änderungen rückgängig machen?
Wenn Du den Kopiermodus deaktivierst, wird das Einfügen sofort rückgängig gemacht. Du kannst auch Application.Undo verwenden, um den letzten Befehl zurückzunehmen.

4. Funktioniert das in allen Excel-Versionen?
Die beschriebenen Methoden sollten in den meisten modernen Excel-Versionen funktionieren, insbesondere in Excel 2010 und neuer.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige