Hallo
habe ein geniales Makro geschrieben. Je nach User blendet das Blatt andere Zeilengruppierungen ein oder aus.
Die sensiblen Daten sind jeweils nur für den entsprechenden User bestimmt. Zusätzlich muss der User auch Eingaben machen. Wurde ebenfalls mit Makro und Zeileneinfügen/löschen gelöst.
Nun kann der findige Anwender den ganzen Blattrange kopieren (über die Gruppierungen hinweg) und in einem neuen Excelblatt einfügen. Mit diesem Schritt werden ihm alle Zellen (auch die gruppierten) voll angezeigt.
Frage: gibt es eine Möglichkeit die Gruppierungen vor dem kopieren zu schützen resp. den Kopierbefehl mittels Makro auszuschalten?
Vielen Dank für die Lösung
Urs
Frage: gibt es eine Möglichkeit die Gruppierungen vor dem
kopieren zu schützen resp. den Kopierbefehl mittels Makro
auszuschalten?
Vielen Dank für die Lösung
Hi Urs,
„die Lösung“? *gg entweder gibt es keine (bekannte) oder mehrere 
Versteh ich dich richtig , du willst Strg-C, Bearbeiten–kopieren, Kontextmenu-kopieren deaktivieren?
Dann müsstest du aber auch Strg-X, Bearbeiten–Ausschneiden usw ebenfalls deaktivieren.
Natürlich auch „Gehe zu“ denn damit lese ich auch in ausgruppierten Zellen.
Wer weiss was da noch alles deaktiviert werden müsste.
Gruß
Reinhard
Hi Reinhard
Sorry das ich dich mit meinen Fragen belästigen muss. Aber ich denke für den OTTO-Normaluser genügt, wenn ich Strg-C,
Bearbeiten–kopieren, Kontextmenu-kopieren deaktivieren?
Strg-X, Bearbeiten–Ausschneiden deaktivieren würde.
Welche Befehle müsste ich da anwenden?
Vielen Dank
Urs
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
Str-C bzw Str-X sind einfach
Sorry das ich dich mit meinen Fragen belästigen muss. Aber ich
denke für den OTTO-Normaluser genügt, wenn ich Strg-C,
Bearbeiten–kopieren, Kontextmenu-kopieren deaktivieren?
Strg-X, Bearbeiten–Ausschneiden deaktivieren würde.
Welche Befehle müsste ich da anwenden?
Hi Urs,
man kann Str-C und Strg-X direkt per Makro ausschalten aber vielleicht wäre meine untere Lösung brauchbarer, denn mit den drei Makros funktionieren Strg-C und Strg-X in nichtgruppierten Zellenbereichen weiter, es git nur eine Meldung wenn versucht wird gruppierte Bereiche zu kopieren7auszuschneiden.
Achja, die drei Makros in ein normales Modul reinkopieren, dann unter extras–makro–makros—optionen für die beiden sichtbaren Makros die entsprechenden Tastaturkürzel c und x vergeben.
Gruß
Reinhard
Sub kopier()
check ("C")
End Sub
Sub ausschn()
check ("X")
End Sub
Sub check(b As String)
'If Selection.Cells.Count \> 1 Then
unsicht = 0
For Each ze In Selection.Rows
If ze.Hidden = True Then unsicht = unsicht + 1
Next ze
If unsicht \> 0 Then
MsgBox "Es ist nicht erlaubt unsichtbare Zellen auszuschneiden/zu kopieren."
Range("A1").Select
Else
'MsgBox "ok"
If b = "C" Then Selection.Copy
If b = "X" Then Selection.Cut
End If
'End If
End Sub
Sorry das ich dich mit meinen Fragen belästigen muss. Aber ich
denke für den OTTO-Normaluser genügt, wenn ich Strg-C,
Bearbeiten–kopieren, Kontextmenu-kopieren deaktivieren?
Strg-X, Bearbeiten–Ausschneiden deaktivieren würde.
Welche Befehle müsste ich da anwenden?
Hi Urs,
man kann Str-C und Strg-X direkt per Makro ausschalten aber
vielleicht wäre meine untere Lösung brauchbarer, denn mit den
drei Makros funktionieren Strg-C und Strg-X in
nichtgruppierten Zellenbereichen weiter, es git nur eine
Meldung wenn versucht wird gruppierte Bereiche zu
kopieren7auszuschneiden.
Achja, die drei Makros in ein normales Modul reinkopieren,
dann unter extras–makro–makros—optionen für die beiden
sichtbaren Makros die entsprechenden Tastaturkürzel c und x
vergeben.
Gruß
Reinhard
Funktioniert tadellos. Nur kann ich über die rechte Maustaste und das Menu immer noch den Kopierbefehl ausführen.
Ich denke aber alles auszuschliessen ist wirklich zu kompliziert.
Gruss
Urs
Harte Deaktivierung
Funktioniert tadellos. Nur kann ich über die rechte Maustaste
und das Menu immer noch den Kopierbefehl ausführen.
Ich denke aber alles auszuschliessen ist wirklich zu
kompliziert.
Gruss
Urs
Hi Urs,
nachfolgend ein Code aus dem Internet, er deaktiviert mehrere Dinge.
(Es fehlt noch der Copy-Button in der Symbolleiste)
Mit testaus bzw testein kannste rumprobieren ohne immer die Arbeitsmappe öffnen schliessen zu müssen.
Gruß
Reinhard
in "DIESEARBEITSMAPPE"
Option Explicit
Private Sub Workbook\_Open()
procKopierenAusschneidenAus
End Sub
Private Sub Workbook\_BeforeClose(Cancel As Boolean)
procKopierenAusschneidenEin
End Sub
Sub testaus()
procKopierenAusschneidenAus
End Sub
Sub testein()
procKopierenAusschneidenEin
End Sub
In ein MODUL:
Option Explicit
'Ihnen stehen damit die Prozeduren
'"procKopierenAusschneidenAus" sowie
'"procKopierenAusschneidenEin" zum Deaktivieren bzw.
'Einschalten der Kopier-Funktionen zur Verfuegung, die Sie
'nun noch ueber entsprechende Ereignisprozeduren automatisch
'aufrufen muessen. In der Regel bietet es sich an, die
'Schutzfunktion einzuschalten, wenn die Arbeitsmappe
'geoeffnet wird und den alten Zustand beim Schliessen der
'Datei wiederherzustellen. Verwenden Sie dazu die folgenden
'Prozeduren im Modul "Diese Arbeitsmappe":
Sub procKopierenAusschneidenAus()
'Tastenkombinationen deaktivieren
Application.OnKey "^x", ""
Application.OnKey "^c", ""
Application.OnKey "^v", ""
Application.OnKey "+{DEL}", ""
Application.OnKey "+{INSERT}", ""
'Drag & Drop ausschalten
Application.CellDragAndDrop = False
' Schaltflaechen deaktivieren
procControlEnableDisable 21, False ' Ausschneiden
procControlEnableDisable 19, False 'Kopieren
procControlEnableDisable 22, False 'Einfuegen
procControlEnableDisable 755, False 'Inhalte einfuegen
End Sub
Sub procKopierenAusschneidenEin()
'Tastenkombinationen einschalten
Application.OnKey "^x"
Application.OnKey "^c"
Application.OnKey "^v"
Application.OnKey "+{DEL}"
Application.OnKey "+{INSERT}"
'Drag & Drop wieder erlauben
Application.CellDragAndDrop = True
' Schaltflaechen aktivieren
procControlEnableDisable 21, True ' Ausschneiden
procControlEnableDisable 19, True 'Kopieren
procControlEnableDisable 22, True 'Einfuegen
procControlEnableDisable 755, True 'Inhalte einfuegen
End Sub
Sub procControlEnableDisable(intId As Integer, bolStatus As Boolean)
On Error Resume Next 'sonst Fehler bei clipboard
Dim cmbSuche As CommandBar
Dim cmbcSteuerelement As CommandBarControl
For Each cmbSuche In Application.CommandBars
Set cmbcSteuerelement = \_
cmbSuche.FindControl(ID:=intId, recursive:=True)
If Not cmbcSteuerelement Is Nothing Then
cmbcSteuerelement.Enabled = bolStatus
End If
Next
End Sub
Verbesserung
Hallo,
hab mich woanders erkundigt, und bekam prompt eine verbesserte Version, diesmal ist auch der Copy-Button auf der clipboard deaktiviert, dadurch dass das Clipboard deaktiviert ist, somit kann die On error resume next entfallen was immer gut ist.
Im vorgehenden Code die
Sub Sub procControlEnableDisable(intId As Integer, bolStatus As Boolean)
durch nachfolgenden Code austauschen.
Gruß
Reinhard
Sub procControlEnableDisable(intId As Integer, bolStatus As Boolean)
Dim cmbcSteuerelement As CommandBarControl
For Each cmbSuche In Application.CommandBars
If cmbSuche.Name = "Clipboard" Then
cmbSuche.Enabled = bolStatus
Else
Set cmbcSteuerelement = cmbSuche.FindControl(Id:=intId, recursive:=True)
If Not cmbcSteuerelement Is Nothing Then cmbcSteuerelement.Enabled = bolStatus
End If
Next
End Sub
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
Hallo Reinhard
War in den Ferien.
Werde das mal ausprobieren.
Vielen Dank
Urs