Clever-Excel-Forum

Normale Version: Feld mit Formel sperren (Worksheet mit Makros)
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo,
ich müsste ein Feld sperren, sodass keine Nutzer die Formel aus Versehen verändern/löschen.
Ich nutze aber in dem Worksheet auch Makros. Damit sind einige Methoden unbrauchbar und ich finde auch Online nichts passendes.
Optional ware es noch super, wenn meine eigens geschriebene Nachricht erscheint, wenn ein Nutzer den Versuch unternimmt, die Zelle zu ändern/löschen.
Kann mir da jemand ein Tipp geben?
Danke!
Hallo,

Zitat:Damit sind einige Methoden unbrauchbar

Dann nenne mal die Methoden, die Du bisher ausprobiert hast. Makros sind auf jeden Fall kein Hinderungsgrund. Außerdem kann man, wenn sowieso Makros eingesetzt werden, die Formeln mit Makros in die Tabellen schreiben lassen, dann ist es recht unproblematisch, wenn jemand diese überschreibt.
(07.01.2016, 13:25)BoskoBiati schrieb: [ -> ]Hallo,


Dann nenne mal die Methoden, die Du bisher ausprobiert hast. Makros sind auf jeden Fall kein Hinderungsgrund. Außerdem kann man, wenn sowieso Makros eingesetzt werden, die Formeln mit Makros in die Tabellen schreiben lassen, dann ist es recht unproblematisch, wenn jemand diese überschreibt.

Hallo BoskoBiati,

ich habe z.B. das versucht:

1:

Sub sumit()
  Dim mainworkBook As Workbook
    Set mainworkBook = ActiveWorkbook
     mainworkBook.Sheets("Quick Score").Range("E35").Value = "Locked"
     mainworkBook.Sheets("Quick Score").Range("E35").Locked = True
     ActiveSheet.Protect Password:="xx"
 
End Sub

wie hier beschrieben: http://excel-macro.tutorialhorizon.com/e...fic-cells/

und unter anderem auch die Methode
2:

Worksheets("Quick Score").Range("E35").Locked = False
Worksheets("Quick Score").Protect(UserInterfaceOnly:=True)


und auch...

3:
-unlock all cells
-lock individual cells
-Protect Sheet

hättest du ein tipp, wie ich machen könnte?
Hallo,

verstanden hast Du das wohl nicht so ganz.
Alle Schutzmechanismen greifen ja nur, wenn ein Passwort verwendet wir, was aber auch nichts Sicheres ist. Das geht schon mit der Zellformatierung und Blattschutz.
Natürlich müssen alle Makros zum Ausführen von Änderungen in Zellen den Schutz am Anfang abschalten und am Ende wieder einschalten.

Wenn Die Zellen verteilt sind, dann musst Du wohl jede einzeln sperren, wobei Range("E35").locked=true sperrt, dazu muß aber auch das Blatt mit Sheets("blabla").protect Password:_"XX"
geschützt werden.
Danke:) Habe diese Woche erst mit VBA angefangen.


Muss es dann so aussehen:

Worksheets("Quick Score").Range("E35").Locked = True
ActiveSheet.Protect Password:="bla"

?

Wo genau muss ich das hinzufügen? Blush
Bei This Workbook oder bei dem worksheet("Quick Score")?
Hallo,



z.B. so:

Code:
   Dim wks as workbook

   set wks=sheets("Quick Score")

   with wks
      .Range("E35").locked = true
        ' weitere Zellen einfügen, falls notwendig, oder auch ganze Bereiche.
      .protect Password:="bla"

   end with
Funktioniert bei mir leider nicht :(

Trotzdem Danke
Hi,

(07.01.2016, 18:01)geniapli schrieb: [ -> ]Funktioniert bei mir leider nicht :(

was bedeutet das?

Wo hast Du das Makro-Fragment eingefügt?
Wie wird es aufgerufen?
Was passiert?
Hallöchen,

ich habe den Beispielcode mal etwas kommentiert. Wenn Du den code laufen lässt, funktioniert er nur 1x. Die Zelle ist ja dann geschützt und Du kannst nicht erneut etwas eintragen. Dazu müsstest Du im Makro erst den Schutz aufheben. Und nicht zu vergessen - Deine Datei muss auch das Blatt Quick Score enthalten.
Code:
Sub sumit()
'Variablendeklarationen
  Dim mainworkBook As Workbook
'Exceldatei dem Objekt zuweisen
    Set mainworkBook = ActiveWorkbook
'Im Blatt Quick Score, Zelle E35, Daten eintragen
     mainworkBook.Sheets("Quick Score").Range("E35").Value = "Locked"
'Schutz fuer Zelle E35 setzen
     mainworkBook.Sheets("Quick Score").Range("E35").Locked = True
'Blatt schuetzen
     ActiveSheet.Protect Password:="xx"
End Sub

So, beim 2. Mal ist das Blatt geschützt. Es fehlt also
ActiveSheet.UnProtect Password:="xx"

Wie das genau funktioniert, kannst Du auch mit dem Makrorekorder aufzeichnen.