Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Copy/Paste verhindern/ Für def. Bereich zulassen

Copy/Paste verhindern/ Für def. Bereich zulassen
19.07.2019 12:14:37
Sebastian
Hallo zusammen,
ich habe untenstehenden (oft gesuchten und viel kopierten) Code genutzt um das Kopieren/ Ausschneiden/ Einfügen in meinem Excel- Workbook zu verhindern.
Der Code funktioniert soweit tadellos, jedoch muss ich den Nutzern in bestimmten Bereichen das Kopieren/ Einfügen erlauben. "Kopieren" habe ich auskommentiert und darf in der ganzen Mappe verwendet werden.
Nun benötige ich die Einschränkung, dass in (Beispiel:) Tabelle1, Zeile A2 ein Text eingefügt werden darf.
Ist dies möglich?
Vielen Dank für die Hilfe
Code "Diese Arbeitsmappe":
Option Explicit
Private Sub Workbook_Activate()                             'Copy&Paste verhindern_
Call ToggleCutCopyAndPaste(False)
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)         'Copy&Paste verhindern_
Call ToggleCutCopyAndPaste(True)
End Sub

Private Sub Workbook_Deactivate()                           'Copy&Paste verhindern_
Call ToggleCutCopyAndPaste(True)
End Sub

Private Sub Workbook_Open()
Call ToggleCutCopyAndPaste(False)                       'Copy&Paste verhindern_
End Sub

Code Modul1:
Sub ToggleCutCopyAndPaste(Allow As Boolean)
'Activate/deactivate cut, copy, paste and pastespecial menu items
Call EnableMenuItem(21, Allow) ' cut
'Call EnableMenuItem(19, Allow) ' copy
Call EnableMenuItem(22, Allow) ' paste
Call EnableMenuItem(755, Allow) ' pastespecial
'Activate/deactivate drag and drop ability
Application.CellDragAndDrop = Allow
'Activate/deactivate cut, copy, paste and pastespecial shortcut keys
With Application
Select Case Allow
Case Is = False
'.OnKey "^c", "CutCopyPasteDisabled"
.OnKey "^v", "CutCopyPasteDisabled"
.OnKey "^x", "CutCopyPasteDisabled"
.OnKey "+{DEL}", "CutCopyPasteDisabled"
.OnKey "^{INSERT}", "CutCopyPasteDisabled"
Case Is = True
'.OnKey "^c"
.OnKey "^v"
.OnKey "^x"
.OnKey "+{DEL}"
.OnKey "^{INSERT}"
End Select
End With
End Sub
Sub EnableMenuItem(ctlId As Integer, Enabled As Boolean)
'Activate/Deactivate specific menu item
Dim cBar As CommandBar
Dim cBarCtrl As CommandBarControl
For Each cBar In Application.CommandBars
If cBar.Name "Clipboard" Then
Set cBarCtrl = cBar.FindControl(ID:=ctlId, recursive:=True)
If Not cBarCtrl Is Nothing Then cBarCtrl.Enabled = Enabled
End If
Next
End Sub
Sub CutCopyPasteDisabled()
'Inform user that the functions have been disabled
MsgBox "Sorry! Cutting, copying and pasting have been disabled in this workbook!"
End Sub
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Copy/Paste verhindern/ Für def. Bereich zulassen
19.07.2019 13:27:53
Regina
Hallo,
nur so eine Idee, Du könntest in den Tabellenblättern, in denen das Einfügen an bestimmten Stellen erlaubt ist, das SelectionChange-Ereignis nutzen. Darin abfragen, welches die aktuelle Zelle ist und ggf. das Einfügen einschalten und in allen anderen Fllen wieder ausschalten.
Gruß
Regina
Anzeige
AW: Copy/Paste verhindern/ Für def. Bereich zulassen
22.07.2019 09:49:25
Sebastian
Hallo Regina,
danke für deinen Beitrag.
"SelectionChange" habe ich diesbezüglich schon öfter gelesen. Leider bin ich nicht VBA- firm genug um dieses in den Code richtig einzubauen.
Könntest du mir dabei helfen?
MFG
AW: Copy/Paste verhindern/ Für def. Bereich zulassen
22.07.2019 11:02:19
Matthias
Hallo
Das "SelectionChange"-Ereignis tritt immer dann ein wenn eine Zelle ausgewählt wird.(Selection)
Also nach diesem Schema: (Code gehört ins entsprechende Tabellenblatt)
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address = Range("A1").Address Then
MsgBox "Einfügen erlaubt"
Else
MsgBox "Einfügen nicht erlaubt"
End If
End Sub
Statt der MsgBoxen einfach Deinen Code zum Sperren oder Erlauben einsetzen.
Gruß Matthias
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Excel Kopieren Verhindern: So Erlaubst Du Copy/Paste in Bestimmten Bereichen


Schritt-für-Schritt-Anleitung

Um das Kopieren und Einfügen in Excel zu verhindern und gleichzeitig in bestimmten Bereichen zu erlauben, kannst Du folgenden VBA-Code verwenden. Dieser Code kombiniert verschiedene Ansätze:

  1. Öffne Dein Excel-Dokument und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Füge den folgenden Code in das "Diese Arbeitsmappe"-Modul ein:

    Private Sub Workbook_Activate()
       Call ToggleCutCopyAndPaste(False)
    End Sub
    
    Private Sub Workbook_BeforeClose(Cancel As Boolean)
       Call ToggleCutCopyAndPaste(True)
    End Sub
    
    Private Sub Workbook_Deactivate()
       Call ToggleCutCopyAndPaste(True)
    End Sub
    
    Private Sub Workbook_Open()
       Call ToggleCutCopyAndPaste(False)
    End Sub
  3. Füge den folgenden Code in ein Modul (Modul1) ein:

    Sub ToggleCutCopyAndPaste(Allow As Boolean)
       Call EnableMenuItem(21, Allow) ' cut
       'Call EnableMenuItem(19, Allow) ' copy
       Call EnableMenuItem(22, Allow) ' paste
       Call EnableMenuItem(755, Allow) ' pastespecial
       Application.CellDragAndDrop = Allow
       With Application
           Select Case Allow
               Case Is = False
                   .OnKey "^c", "CutCopyPasteDisabled"
                   .OnKey "^v", "CutCopyPasteDisabled"
                   .OnKey "^x", "CutCopyPasteDisabled"
                   .OnKey "+{DEL}", "CutCopyPasteDisabled"
                   .OnKey "^{INSERT}", "CutCopyPasteDisabled"
               Case Is = True
                   .OnKey "^c"
                   .OnKey "^v"
                   .OnKey "^x"
                   .OnKey "+{DEL}"
                   .OnKey "^{INSERT}"
           End Select
       End With
    End Sub
  4. Füge den folgenden Code für das Aktivieren/Deaktivieren von Menüpunkten hinzu:

    Sub EnableMenuItem(ctlId As Integer, Enabled As Boolean)
       Dim cBar As CommandBar
       Dim cBarCtrl As CommandBarControl
       For Each cBar In Application.CommandBars
           If cBar.Name <> "Clipboard" Then
               Set cBarCtrl = cBar.FindControl(ID:=ctlId, recursive:=True)
               If Not cBarCtrl Is Nothing Then cBarCtrl.Enabled = Enabled
           End If
       Next
    End Sub
    
    Sub CutCopyPasteDisabled()
       MsgBox "Sorry! Cutting, copying and pasting have been disabled in this workbook!"
    End Sub
  5. Füge den folgenden Code in das entsprechende Tabellenblatt ein, um das Einfügen in bestimmten Zellen zu ermöglichen:

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
       If Target.Address = Range("A2").Address Then
           Call ToggleCutCopyAndPaste(True)
       Else
           Call ToggleCutCopyAndPaste(False)
       End If
    End Sub

Damit hast Du die Möglichkeit, das Kopieren und Einfügen in Excel zu sperren, aber für die Zelle A2 in Tabelle1 zu erlauben.


Häufige Fehler und Lösungen

  • Fehler: Der Code funktioniert nicht.

    • Lösung: Stelle sicher, dass der Code in den richtigen Modulen eingefügt wurde. "Diese Arbeitsmappe" für die ersten vier Code-Abschnitte und das Auswahlereignis im entsprechenden Tabellenblatt.
  • Fehler: Das Einfügen wird nicht erlaubt.

    • Lösung: Überprüfe die Zelladresse in der Worksheet_SelectionChange-Prozedur. Achte darauf, dass es sich um die richtige Adresse handelt.

Alternative Methoden

  • Du kannst auch Datenvalidierung verwenden, um Benutzern das Einfügen von Daten in bestimmten Zellen zu erlauben, ohne VBA-Code zu verwenden.
  • Eine weitere Methode wäre die Verwendung von Schutzmechanismen in Excel, um bestimmte Bereiche zu sperren, während andere bearbeitet werden können.

Praktische Beispiele

Wenn Du beispielsweise das Einfügen in Zeile A2 erlauben möchtest, kannst Du den Code wie oben beschrieben anpassen. Vergiss nicht, den Bereich in If Target.Address zu ändern, wenn Du andere Zellen oder Bereiche einbeziehen möchtest.


Tipps für Profis

  • Nutze die .OnKey-Funktion, um die Tastenkombinationen für das Kopieren, Einfügen und Ausschneiden zu deaktivieren, um das Kopieren in Excel zu verhindern.
  • Achte darauf, Kommentare im Code zu hinterlassen, um zukünftige Änderungen zu erleichtern.
  • Teste Deine VBA-Skripte in einer Kopie Deiner Arbeitsmappe, um Datenverlust zu vermeiden.

FAQ: Häufige Fragen

1. Wie kann ich das Kopieren in einer bestimmten Excel-Version verhindern?
Du kannst den oben genannten Code in jeder modernen Version von Excel verwenden, die VBA unterstützt.

2. Gibt es eine Möglichkeit, das Kopieren nur für bestimmte Benutzer zu deaktivieren?
Das ist mit VBA nicht direkt möglich. Du könntest jedoch über Benutzerformulare und spezifische Benutzerrechte nachdenken, um die Funktionalität einzuschränken.

3. Was passiert, wenn ich die Arbeitsmappe schließe?
Der Code sorgt dafür, dass das Kopieren und Einfügen deaktiviert bleibt, bis Du die Arbeitsmappe erneut öffnest.

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