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

Forumthread: für bestimmten Bereich auschließlich kopieren erlaubt

für bestimmten Bereich auschließlich kopieren erlaubt
19.08.2024 11:58:07
RoWaLo
Ich habe eine Excel Tabelle die ich unverändert bis auf 2 Bereiche behalten möchte
also Schutz auf das ganze Arbeitsblatt - ausgenommen die beiden Bereiche.

Ok das habe ich hinbekommen
Ein Benutzer soll aus dem einen der beiden Bereiche ausschließlich die Zellinhalte aus dem diesem Bereich kopieren dürfen,
er soll keine Berechtigung haben die bestehenden Zellinhalte, Formate, oder Formeln zu verändern oder zu löschen.

Erlaubt sein soll :
Nur der Zugriff auf eine oder mehrere Zellen des ungeschützten Bereichs und
das Kopieren des Wertes --- sonst nichts!

Ist das irgendwie möglich?

Danke für eine Rückantwort und möglichst Hilfe = Lösung
Mit freundlichen Grüßen
R
Anzeige

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: für bestimmten Bereich auschließlich kopieren erlaubt
19.08.2024 12:33:46
Onur
"Ein Benutzer soll aus dem einen der beiden Bereiche ausschließlich die Zellinhalte aus dem diesem Bereich kopieren dürfen," - Wenn er die die Zelle kopieren kann, kann er sich auch aussuchen, WAS er einfügt (Inhalte, Formeln, Formatierungen....)
"er soll keine Berechtigung haben die bestehenden Zellinhalte, Formate, oder Formeln zu verändern oder zu löschen. " - Einfach Alles verbieten, ausser das Anwählen der Zelle(n).
Anzeige
AW: für bestimmten Bereich auschließlich kopieren erlaubt
20.08.2024 21:25:30
RoWaLo
Hallo Alle
Ich habe eine Lösung für mein Problem gefunden, -- siehe meinen Beitrag nach dem Beitrag wo sich die Überschrift
änderte in -- "jetzt geht es hier weiter" --- in dem thread hier unten.

Danke an alle die geantwortet haben und mit überlegt haben,
Gruß RoWaLo
AW: für bestimmten Bereich auschließlich kopieren erlaubt
19.08.2024 14:13:55
volti
Hallo R,

"Ein Benutzer soll aus dem einen der beiden Bereiche ausschließlich die Zellinhalte aus dem diesem Bereich kopieren dürfen,"

In Excel einmal aus einem Tabellenblatt etwas kopiert, transferiert Windows mehrere Formate in die Zwischenablage.
Wenn das Empfängerprogramm diese Formate unterstützt, können sie auch entsprechend dort eingefügt werden.
Wie onur schon ausgeführt hat, kann sich der User dieses aussuchen, da hat man vorher keinen Einfluss drauf.

Es sei denn, man löscht außer dem Textformat alle anderen Formate. Dann kann der User nur noch Text einfügen.

Und genau das macht der Code in diesem Beitrag.
https://www.clever-excel-forum.de/Thread-Excel-Range-als-Werte-in-die-Zwischenablage-kopieren

Für Deine Anforderung ist das allerdings nur die halbe Miete, denn das Programm müsste direkt nach der Kopieranweisung ausgeführt werden.
Man bräuchte so zu sagen ein Event: OnCopy.

Zum Beispiel durch Deaktivierung oder Umlenkung der Kopiermöglichkeiten.
Strg-C per OnKey auf eine eigene Sub umlenken, Contextmenükopieren deaktivieren oder neu belegen und den Ribbon entsprechend bearbeiten.
Ales möglich, aber halt auch aufwendig.

Oder durch Aktivierung einer Timersub, z.B. wenn man sich in einem der gewünschten Felder befindet. Die Timersub prüft periodisch, ob Inhalte in der Zwischenablage sind und handelt entsprechend.

Nach dem Motto "geht nicht, gibt's nicht" kann man erkennen: Das kann man hinkriegen.

Ob sich der Aufwand lohnt, ist eine andere Sache.

Viele Grüße
Karl-Heinz
Anzeige
AW: für bestimmten Bereich auschließlich kopieren erlaubt
19.08.2024 16:55:57
RoWaLo
Hallo Karl Heinz
siehe meine Antwort an Onur und die hochgeladene Beisp. Datei, vieleicht wird dann mein Wunsch klarer.
Gruß R
AW: für bestimmten Bereich auschließlich kopieren erlaubt
20.08.2024 12:44:28
volti
Hallo R,

wenn ich das richtig sehe, verändert sich durch Deine Schutzeinstellung beim Kopieren nicht das Format, es ist so wie Du es wolltest.

Aber hier noch eine Idee:

Damit im ersten Bereich nichts verändert werden kann, kann (zwar nachträglich) die OnDo-Funktion verwendet werden. Das kommt Deinem Wunsche doch schon sehr nahe.
Des weiteren könnte man, bei jedem Feldwechsel (Selection.Change) und jedem Blattwechsel (Deactivate) meinen u.a. bereits empfohlenen Code einsetzen.
Der verhindert, dass sich andere Daten außer Text in der Zwischenablage befinden. Somit können keine Formate kopiert werden.
Hierbei ist dann kein Timer mehr nötig.

Schau mal, ob es so in Ordnung ist.

Code:


' ##### In ein allgemeines Modul ##### Private Declare PtrSafe Function GlobalAlloc Lib "kernel32" (ByVal wFlags As Long, _ ByVal dwBytes As LongPtr) As LongPtr Private Declare PtrSafe Function GlobalLock Lib "kernel32" ( _ ByVal hMem As LongPtr) As LongPtr Private Declare PtrSafe Function GlobalSize Lib "kernel32" ( _ ByVal hMem As LongPtr) As LongPtr Private Declare PtrSafe Function GlobalUnlock Lib "kernel32" ( _ ByVal hMem As LongPtr) As Long Private Declare PtrSafe Function lstrcpy Lib "kernel32" ( _ ByVal lpString1 As Any, ByVal lpString2 As Any) As LongPtr Private Declare PtrSafe Function IsClipboardFormatAvailable Lib "user32" ( _ ByVal wFormat As Long) As Long Private Declare PtrSafe Function SetClipboardData Lib "user32" ( _ ByVal wFormat As Long, ByVal hMem As LongPtr) As LongPtr Private Declare PtrSafe Function GetClipboardData Lib "user32" ( _ ByVal wFormat As Long) As LongPtr Private Declare PtrSafe Function OpenClipboard Lib "user32" ( _ ByVal hWnd As LongPtr) As Long Private Declare PtrSafe Function CloseClipboard Lib "user32" () As Long Private Declare PtrSafe Function EmptyClipboard Lib "user32" () As Long Function KopiereZwischenablageDatenAlsText() As String ' Kopiert Daten in der Zwischenablage als Text Dim hMem As LongPtr, lpGMem As LongPtr, sCliptext As String, i As Long Const CF_TEXT As Long = 1 If IsClipboardFormatAvailable(CF_TEXT) > 0 Then ' Daten vorhanden? For i = 1 To 2 OpenClipboard 0& ' Zwischenablage öffnen If i = 1 Then hMem = GetClipboardData(CF_TEXT) ' TEXT aus Zwischenablage If i = 2 Then hMem = GlobalAlloc(&H42, Len(sCliptext)) ' Speicher reservieren If hMem > 0 Then lpGMem = GlobalLock(hMem) ' Speicher blockieren If i = 1 Then sCliptext = Space(CLng(GlobalSize(hMem))) ' Platz reservieren lstrcpy sCliptext, lpGMem ' Daten kopieren GlobalUnlock hMem ' Speicher freigeben EmptyClipboard ' Zwischenablage leeren Else lpGMem = lstrcpy(lpGMem, sCliptext) ' Daten kopieren If GlobalUnlock(hMem) = 0 Then _ SetClipboardData CF_TEXT, hMem ' TEXT in Zwischenablage End If End If CloseClipboard ' Zwischenablage schließen Next i End If End Function ' ##### In das Tabellenblatt-Modul ##### Private Sub Worksheet_Change(ByVal Target As Range) Dim iSect With Application Set iSect = .Intersect(Range("B10:B20"), Target) If Not iSect Is Nothing Then .EnableEvents = False .Undo .EnableEvents = True End If End With End Sub Private Sub Worksheet_Deactivate() Call KopiereZwischenablageDatenAlsText End Sub Private Sub Worksheet_SelectionChange(ByVal Target As Range) Call KopiereZwischenablageDatenAlsText End Sub

_________________________
viele Grüße aus Freigericht 😊
Karl-Heinz
Anzeige
AW: für bestimmten Bereich auschließlich kopieren erlaubt
19.08.2024 16:49:15
RoMaLo
Hallo Onur
danke für deine Antwort
kannst du mir bitte sagen was genau du meinst mit den letzen Worten
---- "Einfach Alles verbieten, ausser das Anwählen der Zelle(n). "
Was soll ich deiner Meinung nach bitte wo und wie machen?

Um mein Beisp. noch deutlicher zu machen habe ich eine Datei hochgeladen (ist lediglich ein Beisp. für das Problem)
Die beiden nicht gesperrten Bereiche sind
1) B10:B20
........ in diesem Bereich gibt es Zellinhalte 5 Zellen mit Zahlen + 6 Zellen mit Buchstaben
......... und Formate Hintergrund gelb und Rahmen ........................ Inhalte und Format sollen nicht verändert werden können.
......... man soll jedoch die Möglichkeit haben die einelnen Zellen anzuwählen und nur den Zellinhalt zu kopieren.
2) E10:E20
......... Der kopierte Zellinhalt (der Wert) soll dann ohne das Format in eine Zelle vom 2. Bereich eingefügt werden.
..........In diesem Bereich soll das bestehende Format unveränderlich sein, Werte sollen jedoch eingefügt und gelöscht werden können

https://www.herber.de/bbs/user/171702.xlsx

Gruß R

Anzeige
AW: für bestimmten Bereich auschließlich kopieren erlaubt
19.08.2024 16:54:20
Onur
Wie bereits geschrieben: Das Einfügen nur auf den Inhalt beschränken geht NICHT.
AW: für bestimmten Bereich auschließlich kopieren erlaubt
19.08.2024 21:36:11
Volti
Naja Onur,
das geht schon, aber mit ziemlichem Aufwand.
Gruß KH
AW: für bestimmten Bereich auschließlich kopieren erlaubt
19.08.2024 22:38:59
Onur
Ich weiss - es gibt kaum etwas, was mit VBA nicht geht.... :)
Anzeige
AW: Geht jetzt hier weiter....
20.08.2024 21:10:58
RoWaLo
Hallo Alle
Ich verstehe den letzten Eintrag nicht. Darf man nicht auch eine andere Quelle nach einer Lösung befragen?
Es muss doch erlaubt sein, auf verschiedenen Wegen eine Lösung zu finden.
Also Nein, es geht nicht nur da weiter!

Aber inzwischen habe ich eine Lösung für mein Problem gefunden.

Auf das Beispiel bezogen

Ich werde den Ursprungsbereich B10:B20 jetzt auch in den generellen Arbeitsblattschutz mit einbeziehen!
Also nun ist auch kein Zugriff mehr auf diese Zellen möglich und damit weder Änderungen der Werte noch der Formate mehr möglich.
Das was ich auf jedenFall wollte.

Der Zielbereich E10:E20 ist weiter vom Schutz ausgenommen,
aber ich werde nun per Menü/Daten/Datenüberprüfung nur noch bestimmte Daten zulassen und
zwar nur die Daten aus dem Ursprungsbereich als Auswahlliste. Somit können keine anderen Daten dort eingegeben werden,
ansonsten gibt es eine Fehlermeldung.

Die gewählten (eingefügten) Werte können anschließend allerdings weiter normal gelöscht werden.
Es ist keine besondere Bedienung abweichend von der gewohnten Bedienung.
Es ist kein Makro notwendig.

Das heißt dann, der User kopiert dann nicht mehr den Wert aus der Ursprungstabelle,
sondern wählt den Wert den er möchte aus einer Popdown Auswahlliste (mit den gleichen Werten).

Die Frage die an der Stelle noch nicht geklärt ist, ist die ob die Größe der Auswahlliste Beschränkungen hat.

Vielen Dank an Alle für die Mühe und Überlegungen.
Beste Grüße
RoWaLo
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

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