Copy paste funktioniert bei blattschutz nicht

… trotz benutzerberechtigung

Hallo allerseits,

habe eine Datei mit Blattschutz versehen mit Benutzerberechtigungen um das Bearbeiten von verschiedenen Bereichen einem bestimmten Personenbereich zu ermöglichen. Um die gesetzten Filter in den einzelnen Spalten nutzen zu können hebt das folgende Makro den Blattschutz auf sobald irgendeine Zelle in Zeile 3 angeklickt wird:

Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
If Right(Target.Address, 2) = „$3“ Then
ActiveSheet.Unprotect
Else
ActiveSheet.Protect userinterfaceonly:=True
ActiveSheet.EnableOutlining = True
End If
End Sub

soweit so gut. Leider verhindert dieses Makro das kopieren und einfügen von Daten obwohl der Benutzer für den Bereich aus dem er die Zellen kopieren und wo anders die Werte einfügen will benutzerberechtígt ist. Er kann die zu kopierende Zelle anwählen, mit strg.+c bzw. mit rechtem Mausklick + kopieren und z.B. in ein neues xls-Sheet kopieren aber eben nicht in eine andere Zelle der blattgeschützten Tabelle.

Gibt es einen Befehl, den ich ähnlich „ActiveSheet.EnableOutlining = True“ noch in das Makro einpflegen muss um copy paste Vorgänge zuzulassen oder wie kann ich sonst dieses Problem lösen?

Vielen Dank im Voraus für die Unterstützung.

Beste Grüsse,
Xsandro.

hallo Xsandro,

… trotz benutzerberechtigung

ich kann da keine Benutzerberechtigung erkennen.

das wäre eine von zwei möglichen Benutzerberechtigungsabprüfungen:

Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
If Application.Username=„Xsandro“ then
'…
Else
'…
End sub

habe eine Datei mit Blattschutz versehen mit
Benutzerberechtigungen um das Bearbeiten von verschiedenen
Bereichen einem bestimmten Personenbereich zu ermöglichen. Um
die gesetzten Filter in den einzelnen Spalten nutzen zu können
hebt das folgende Makro den Blattschutz auf sobald irgendeine
Zelle in Zeile 3 angeklickt wird:

Nicht nur, das Makro hebt den Blattschutz auch auf wenn du C2:F3 markierst!

soweit so gut. Leider verhindert dieses Makro das kopieren und
einfügen von Daten obwohl der Benutzer für den Bereich aus dem
er die Zellen kopieren und wo anders die Werte einfügen will
benutzerberechtígt ist. Er kann die zu kopierende Zelle
anwählen, mit strg.+c bzw. mit rechtem Mausklick + kopieren
und z.B. in ein neues xls-Sheet kopieren aber eben nicht in
eine andere Zelle der blattgeschützten Tabelle.

? Zum Reinkopieren muß man wohl die andere Zelle markieren, damit wird der Blattschutz gesetzt und es geht nix.
Warum das Kopieren von A3 nach B3 nicht klappt ist mir grad sehr unklar.

Gibt es einen Befehl, den ich ähnlich
„ActiveSheet.EnableOutlining = True“ noch in das Makro
einpflegen muss um copy paste Vorgänge zuzulassen oder wie
kann ich sonst dieses Problem lösen?

EnableOutlining ist doch was für Gruppierungen/Gliederungen, naja nicht grad wo ich sehr durchblicke.
Ich sehe da aber grad keinen direkten Zusammenhang mit EnableOutlining.

Ohne konkreten Plan fiel mir nur auf das in der Hilfe es so steht:
ActiveSheet.Protect userinterfaceonly:=True
ActiveSheet.EnableOutlining = True

und du hast eine andere Reihenfolge, ändere die mal probehalber.

Gruß
Reinhard

Hallo Reinhard,

vielen Dank für Deine Antworten:

hallo Xsandro,

… trotz benutzerberechtigung

ich kann da keine Benutzerberechtigung erkennen.

das wäre eine von zwei möglichen
Benutzerberechtigungsabprüfungen:

Private Sub Worksheet_SelectionChange(ByVal Target As
Excel.Range)
If Application.Username=„Xsandro“ then
'…
Else
'…
End sub

Die Benutzerberechtigung habe ich nicht über das Makro selbst sondern über die Option „Benutzer dürfen Bereiche Bearbeiten“ bei Überprüfen eingegeben. Dies funktioniert auch sobald der Blattschutz aktiviert ist, d.h. wenn ich oder ein anderer Berechtigter die Datei öffne, dann ist die Eingabe in den freigebebenen Bereichen ohne Kennwort möglich für alle anderen nicht.

habe eine Datei mit Blattschutz versehen mit
Benutzerberechtigungen um das Bearbeiten von verschiedenen
Bereichen einem bestimmten Personenbereich zu ermöglichen. Um
die gesetzten Filter in den einzelnen Spalten nutzen zu können
hebt das folgende Makro den Blattschutz auf sobald irgendeine
Zelle in Zeile 3 angeklickt wird:

Nicht nur, das Makro hebt den Blattschutz auch auf wenn du
C2:F3 markierst!

soweit so gut. Leider verhindert dieses Makro das kopieren und
einfügen von Daten obwohl der Benutzer für den Bereich aus dem
er die Zellen kopieren und wo anders die Werte einfügen will
benutzerberechtígt ist. Er kann die zu kopierende Zelle
anwählen, mit strg.+c bzw. mit rechtem Mausklick + kopieren
und z.B. in ein neues xls-Sheet kopieren aber eben nicht in
eine andere Zelle der blattgeschützten Tabelle.

? Zum Reinkopieren muß man wohl die andere Zelle markieren,
damit wird der Blattschutz gesetzt und es geht nix.
Warum das Kopieren von A3 nach B3 nicht klappt ist mir grad
sehr unklar.

Das Kopieren von A3 nach B3 bzw. alle Zellen in Zeile drei können innerhalb der Zeile 3 kopiert werden, da beim anklicken einer Zelle in Zeile drei der Blattschutz aufgehoben wird. Ich kann aber nicht z.B. von C3 nach C4 kopieren obwohl ich in C4 zugriffsberechtigt bin, d.h. ich kann in die Zelle reinschreiben aber e3ben nichts in diese Zelle hineinkopieren

Gibt es einen Befehl, den ich ähnlich
„ActiveSheet.EnableOutlining = True“ noch in das Makro
einpflegen muss um copy paste Vorgänge zuzulassen oder wie
kann ich sonst dieses Problem lösen?

EnableOutlining ist doch was für Gruppierungen/Gliederungen,
naja nicht grad wo ich sehr durchblicke.
Ich sehe da aber grad keinen direkten Zusammenhang mit
EnableOutlining.

Was ich meinte ist ein Befehl, der für Zugriffsberechtigte copy+paste trotz Blattschutz zulässt.

Ohne konkreten Plan fiel mir nur auf das in der Hilfe es so
steht:
ActiveSheet.Protect userinterfaceonly:=True
ActiveSheet.EnableOutlining = True

und du hast eine andere Reihenfolge, ändere die mal
probehalber.

Versteh ich nicht ganz, die von Dir genannte Reihenfolge steht doch so in meinem Makro oder meinst Du was anderes?

Gruß
Reinhard

Ich hoffe mit meinen Zusatzinformationen wurde das Ganze ein wenig klarer?

Gruss,
Xsandro.

Hallo Xsandro,

Die Benutzerberechtigung habe ich nicht über das Makro selbst
sondern über die Option „Benutzer dürfen Bereiche Bearbeiten“
bei Überprüfen eingegeben.

um welche Excelversion geht es, klingt nach XL 2007 oder höher?

Nicht nur, das Makro hebt den Blattschutz auch auf wenn du
C2:F3 markierst!

soweit so gut.

? Ist es also okay daß markierung von C2:F3 den Blattschutz aufhebt?

? Zum Reinkopieren muß man wohl die andere Zelle markieren,
damit wird der Blattschutz gesetzt und es geht nix.
Warum das Kopieren von A3 nach B3 nicht klappt ist mir grad
sehr unklar.

Das Kopieren von A3 nach B3 bzw. alle Zellen in Zeile drei
können innerhalb der Zeile 3 kopiert werden, da beim anklicken
einer Zelle in Zeile drei der Blattschutz aufgehoben wird.

Aha, bei mir irgendwie bislang nocht nicht. Kopieren mittels Strg+c und Strg+v geht bislang bei mir nicht mit A3—>B3.

EnableOutlining ist doch was für Gruppierungen/Gliederungen,
naja nicht grad wo ich sehr durchblicke.
Ich sehe da aber grad keinen direkten Zusammenhang mit
EnableOutlining.

Was ich meinte ist ein Befehl, der für Zugriffsberechtigte
copy+paste trotz Blattschutz zulässt.

Das habe ich verstanden *glaub* Als Notösung habe ich da im Hinterkopf den vagen Plan Strg+c und Strg+v eigene makros zuzuweisen.

Ohne konkreten Plan fiel mir nur auf das in der Hilfe es so
steht:
ActiveSheet.Protect userinterfaceonly:=True
ActiveSheet.EnableOutlining = True
und du hast eine andere Reihenfolge, ändere die mal
probehalber.

Versteh ich nicht ganz, die von Dir genannte Reihenfolge steht
doch so in meinem Makro oder meinst Du was anderes?

Sorry, in meiner Hilfe (XL 2000) steht es so:
ActiveSheet.EnableOutlining = True
ActiveSheet.Protect contents:=True, userInterfaceOnly:=True

Ich hoffe mit meinen Zusatzinformationen wurde das Ganze ein
wenig klarer?

Für mich ja, ich weiß jetzt um was es genau geht.
Bei Lösungsangeboten tappe ich noch im Dunkeln rum :smile:

Gruß
Reinhard

Gruß
Reinhard

Hallo Xsandro.,

es geht wohl um XL 2007.

Probier’s mal so:

In Modul „DieseArbeitsmappe“

Option Explicit

Private Sub Workbook\_Open()
Dim Benutzer, B As Integer
Benutzer = Array("Xsandro", "Reinhard") 'Anpassen
For B = 0 To UBound(Benutzer)
 If Benutzer(B) = Application.UserName Then
 Darf = True
 Exit Sub
 End If
Next B
End Sub

In Modul „Tabelle1“

Option Explicit

Private Sub Worksheet\_SelectionChange(ByVal Target As Excel.Range)
If Darf = True Or Right(Target.Address, 2) = "$3" Then
 ActiveSheet.Unprotect
Else
 ActiveSheet.Protect userinterfaceonly:=True
 ActiveSheet.EnableOutlining = True
End If
End Sub

In Modul „Modul1“

Option Explicit

Public Darf As Boolean

Gruß
Reinhard

Hallo Reinhard,

vielen Dank für Deine Hilfe. Ich finde es klasse wie schnell einem hier versucht geholfen zu werden.

Die Benutzerberechtigung habe ich nicht über das Makro selbst
sondern über die Option „Benutzer dürfen Bereiche Bearbeiten“
bei Überprüfen eingegeben.

um welche Excelversion geht es, klingt nach XL 2007 oder
höher?

Wie Du richtig in Deiner anderen Antwort erwähnt hast, handelt es sich um XL 2007. Sorry, hätte ich auch gleich sagen können.

Nicht nur, das Makro hebt den Blattschutz auch auf wenn du
C2:F3 markierst!

soweit so gut.

? Ist es also okay daß markierung von C2:F3 den Blattschutz
aufhebt?

Anfürsich wäre es nicht ok. Im Übrigen wird bei mir der Blattschutz nicht aufgehoben wenn C2:F3 markiert wird. Eigentlich müsste der Blattschutz nur beim Anklicken irgendwo in dem Bereich A3:W3 aufgehoben werden. Wenn ich in meinem Makro die Zeile
If Right(Target.Address, 2) = „$3“ durch
If Right(Target.Address, 2) = „A3:W3“ ersetze
funktioniert dies aber nicht…

? Zum Reinkopieren muß man wohl die andere Zelle markieren,
damit wird der Blattschutz gesetzt und es geht nix.
Warum das Kopieren von A3 nach B3 nicht klappt ist mir grad
sehr unklar.

Das Kopieren von A3 nach B3 bzw. alle Zellen in Zeile drei
können innerhalb der Zeile 3 kopiert werden, da beim anklicken
einer Zelle in Zeile drei der Blattschutz aufgehoben wird.

Aha, bei mir irgendwie bislang nocht nicht. Kopieren mittels
Strg+c und Strg+v geht bislang bei mir nicht mit A3—>B3.

Verstehe ich nicht. Wenn ich mein Makro in eine neue Tabelle hineinkopiere, für die Zeile 3 mir die Benutzerberechtigung eintrage, dass ich ohne Kennwort auf alle Zellen der Zeile 3 zugreifen kann, danach den Blattschutz setze, dann kann ich auf alle Zellen der Zeile drei zugreifen und wie ich will z.B. Zellen von A3 nach B3 kopieren …

EnableOutlining ist doch was für Gruppierungen/Gliederungen,
naja nicht grad wo ich sehr durchblicke.
Ich sehe da aber grad keinen direkten Zusammenhang mit
EnableOutlining.

Was ich meinte ist ein Befehl, der für Zugriffsberechtigte
copy+paste trotz Blattschutz zulässt.

Das habe ich verstanden *glaub* Als Notösung habe ich da im
Hinterkopf den vagen Plan Strg+c und Strg+v eigene makros
zuzuweisen.

An sowas dachte ich auch schon habe aber leider keine Ahnung wie man sowas realisieren könnte … Zumal dieses Makro nur einem bestimmten Personenkreis copy+paste ermöglichen soll.

Ohne konkreten Plan fiel mir nur auf das in der Hilfe es so
steht:
ActiveSheet.Protect userinterfaceonly:=True
ActiveSheet.EnableOutlining = True
und du hast eine andere Reihenfolge, ändere die mal
probehalber.

Versteh ich nicht ganz, die von Dir genannte Reihenfolge steht
doch so in meinem Makro oder meinst Du was anderes?

Sorry, in meiner Hilfe (XL 2000) steht es so:
ActiveSheet.EnableOutlining = True
ActiveSheet.Protect contents:=True, userInterfaceOnly:=True

OK, kein Problem. Habe Reihenfolge geändert, hatte jedoch keinen Einfluss auf das Ergebnis.

Ich hoffe mit meinen Zusatzinformationen wurde das Ganze ein
wenig klarer?

Für mich ja, ich weiß jetzt um was es genau geht.
Bei Lösungsangeboten tappe ich noch im Dunkeln rum :smile:

Ich werde heute Abend den Vorschlag aus Deinem anderem email mir genauer zu Gemüte führen und gebe Dir morgen Feedback.

Besten Dank + Gruss,

Xsandro.

Hallo Reinhard,

die Neugierde hat mich gepackt und jetzt habe ich doch schon vorher Zeit gefunden … Leider funktioniert es nicht. Sicherlich mache ich da wegen meiner Unwissenheit einen Fehler den ich mit nachfolgenden Fragen gerne eingrenzen möchte. Mucho Danke für Deine Geduld und Ausdauer … :smile:

Probier’s mal so:

In Modul „DieseArbeitsmappe“

Option Explicit

Private Sub Workbook_Open()
Dim Benutzer, B As Integer
Benutzer = Array(„Xsandro“, „Reinhard“) 'Anpassen

Gehe ich richtig in der Annahme, dass ich als Benutzer meine email-Adresse anstelle Xsandro eingebe. So mach ich dies zumindest in Excel 2007 wenn ich über Überprüfen -> Benutzer dürfen Bereiche bearbeiten -> mir die Zugriffsberechtigung für einen bestimmten Bereich gebe.

For B = 0 To UBound(Benutzer)
If Benutzer(B) = Application.UserName Then
Darf = True
Exit Sub
End If
Next B
End Sub

In Modul „Tabelle1“

Option Explicit

Private Sub Worksheet_SelectionChange(ByVal Target As
Excel.Range)
If Darf = True Or Right(Target.Address, 2) = „$3“ Then
ActiveSheet.Unprotect
Else
ActiveSheet.Protect userinterfaceonly:=True
ActiveSheet.EnableOutlining = True
End If
End Sub

In Modul „Modul1“

Wo ist bitte Modul1? In „meinem“ VBA-Projekt sehe ich lediglich „Diese Arbeitsmappe“ und „Tabelle 1 - 3“

Option Explicit

Public Darf As Boolean

Besten Dank + Gruss,

Xsandro

Hola Xsandro,

Mucho Danke für Deine Geduld und Ausdauer … :smile:

no hay de que :smile:

Probier’s mal so:

In Modul „DieseArbeitsmappe“

Option Explicit

Private Sub Workbook_Open()
Dim Benutzer, B As Integer
Benutzer = Array(„Xsandro“, „Reinhard“) 'Anpassen

Gehe ich richtig in der Annahme, dass ich als Benutzer meine
email-Adresse anstelle Xsandro eingebe. So mach ich dies
zumindest in Excel 2007 wenn ich über Überprüfen -> Benutzer
dürfen Bereiche bearbeiten -> mir die Zugriffsberechtigung für
einen bestimmten Bereich gebe.

Tja, das mit dem Kram in 2007 in Excel 2007 ist ein problem. kenne ich mich nicht aus.
Habe heute morgen mal aufgrund deiner Anfrage geschaut was es damit auf sich hat und ja man kann da mehrere ID-Namen angeben, darunter auch Emailadressen. Ist mir neu weil ich gern mit XL 2000 „arbeite“.

Der Code den ich zeigte kümmert sich nicht darum was du da eingetragen hast. Dafür läuft er auch in allen Versionen.
In allen Versionen kannst du zwei „namen“ abfragen, ich habe Application.Username genommen, also den Namen den du in Excel hast.

Kannste ja locker rausfinden wenn du deinen nicht weißt mit:
Msgbox Application.Username
Diesen Namen und den analogen Namen der anderen „Erlaubten“ mußt du im Code eintragen.

Wo ist bitte Modul1? In „meinem“ VBA-Projekt sehe ich
lediglich „Diese Arbeitsmappe“ und „Tabelle 1 - 3“

Sorry. Im VB-Editor: Einfügen—Modul…

Gruß
Reinhard

Hola Xsandro,

? Ist es also okay daß markierung von C2:F3 den Blattschutz
aufhebt?

Anfürsich wäre es nicht ok.
Im Übrigen wird bei mir der
Blattschutz nicht aufgehoben wenn C2:F3 markiert wird.

No creo.

Wie auch immer, prüfe das so ab:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Set Target = Intersect(Target, Rows(3))
If Target Is Nothing Then Exit Sub

’ weiterer Code

End Sub

Wenn ich in meinem Makro die Zeile
If Right(Target.Address, 2) = „$3“ durch
If Right(Target.Address, 2) = „A3:W3“ ersetze
funktioniert dies aber nicht…

Ist klar.
Wenn z.B. du C2:F3 markierst so ist die Adresse von Target:
$C$2:blush:F$3
Dann wäre die erste IF-Bedingung erfüllt, genau das meine ich wenn ich sage daß dann auch der Blattschutz aufgehoben wird mit deinem Code.

Die zweite IF-Bedingung kann niemals erfüllt werden.
Bei einem Textvergleich kann nie ein 2er String gleich einem 4er String sein.

Das Kopieren von A3 nach B3 bzw. alle Zellen in Zeile drei
können innerhalb der Zeile 3 kopiert werden, da beim anklicken
einer Zelle in Zeile drei der Blattschutz aufgehoben wird.

Aha, bei mir irgendwie bislang nocht nicht. Kopieren mittels
Strg+c und Strg+v geht bislang bei mir nicht mit A3—>B3.

…dann kann ich
auf alle Zellen der Zeile drei zugreifen und wie ich will z.B.
Zellen von A3 nach B3 kopieren …

Okay, heute morgen ging das auch bei mir, das ist vom Tisch äh mesa :smile:

An sowas dachte ich auch schon habe aber leider keine Ahnung
wie man sowas realisieren könnte … Zumal dieses Makro nur
einem bestimmten Personenkreis copy+paste ermöglichen soll.

Dann zeige mal bitte wer was darf und wer was nicht darf.
So in etwa:

Tabellenblatt: [Mappe1]!Tabelle2
 │ A │ B │ C │
──┼──────────────────────────────────────┼────────┼───────┤
1 │ │ Freund │ Feind │
──┼──────────────────────────────────────┼────────┼───────┤
2 │ Kopieren von C3 nach F3 │ ja │ ja │
──┼──────────────────────────────────────┼────────┼───────┤
3 │ Kopieren von C3 nach F5 │ ja │ nein │
──┼──────────────────────────────────────┼────────┼───────┤
4 │ Kopieren von C5 nach F3 │ ja │ ? │
──┼──────────────────────────────────────┼────────┼───────┤
5 │ Kopieren von C3 nach AnderesBlatt!A1 │ ja │ ja │
──┼──────────────────────────────────────┼────────┼───────┤
6 │ Kopieren von F5 nach AnderesBlatt!A1 │ ja │ nein │
──┴──────────────────────────────────────┴────────┴───────┘
A1:C6
haben das Zahlenformat: Standard

Tabellendarstellung erreicht mit dem Code in FAQ:2363

ich schaue inzwischen wie man mit vba auf das zugreifst was du als benutzererlaubnis via Email definiert hast und auswertet.

OK, kein Problem. Habe Reihenfolge geändert, hatte jedoch
keinen Einfluss auf das Ergebnis.

Gut, sah darin eh nur MinimalstChance aber man weiß ja nie *gg*

Gruß
Reinhard

Hallo Reinhard,

alle Deine Antworten klingen logisch aber leider kann ich sie mangels Wissens nicht umsetzen.

Könntest Du mir bitte mein ursprüngliches Makro so umschreiben, damit ausschliesslich ein Anklicken auf den Bereich A3 zu W3 den Blattschutz kurzfristig aufhebt (bis man eine Zelle ausserhalb dieses Bereiches anklickt)?

Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)

If Right(Target.Address, 2) = „$3“ Then
ActiveSheet.Unprotect
Else
ActiveSheet.Protect userinterfaceonly:=True
ActiveSheet.EnableOutlining = True
End If

End Sub

Bei dem Copy+paste Wunsch muss ich zum besseren Verständnis wohl weiter ausholen:

Es gibt zwei Gruppen, nennen wir sie Schreiber + Leser. Schreiber geben Daten in die Tabellen 1 + 2 ein, die Leser dürfen nur lesen und die Tabellen nach Belieben sortieren und filtern (deshalb auch das obenstehende Makro um die Filter/Sortierfunktion allen zur Verfügung zu stellen).

Die Schreiber haben überall dort Zugriff wo sie Daten eingeben sollen. Dies habe ich auch so über „Benutzerberechtigungen zum Bearbeiten von Bereichen“ hinbekommen. Überall dort müsste auch das copy+pasten funktionieren. Sofern möglich müsste das Makro die bereits vergebenen Benutzerberechtigungen abfragen.

Auch für Schreiber gibt es Bereiche mit Leserechte only. Trotzdem müssten Daten von dort in Bereiche auf die die Schreiber schreibberechtigt sind eingefügt werden können. Zum Teil müssen Daten auch von einer Tabelle in die nächste Tabelle kopiert werden.

Ich hoffe mein Anliegen wird hierdurch ein wenig klarer? Wenn Du mein Makro um die copy+paste Möglichkeit für die Bereiche auf die die Schreiber schreibberechtigt sind anpassen könntest dann wäre mir sehr sehr geholfen …

Danke + Gruss,

Xsandro

Hallo Reinhard,

habe das Makro zum Laufen gebracht. Vielen Dank für Deine Anmerkungen. So langsam tut sich für mich einen neue Welt auf … mit leider mehr Fragen als Antworten.

Das Makro funktioniert zwar aber ergibt nicht das gewünschte Ergebnis. Ich hoffe Dir hilft meine andere Antwort um damit hoffentlich besser aufzeigen zu können was das Makro idealerweise können sollte.

Besten Dank.

Xsandro.