Discussion:
bei geschütztem Arbeitsblatt Zellen nachträglich schützen
(zu alt für eine Antwort)
Michael Groß
2009-07-15 09:15:27 UTC
Permalink
Hallo,

ich habe ein geschütztes Arbeitblatt, bei dem mehrere Zellen zur Eingabe von
Daten ungeschützt sind. Ich möchte wenn nun die ungeschützte Zelle F3,
DropDownListe mit den Auswahlmöglichkeiten 0;rot;blau, den Wert 0 hat
nachträglich den Bereich F4:H27 per VBA schützen.
Die Private Sub Worksheet_SelectionChange Prozedur habe ich in dem Blatt
schon mal verwendet.
Kann mir da jemand auf die Sprünge helfen.

Vielen Dank im Voraus.
Michael
Claus Busch
2009-07-15 09:30:18 UTC
Permalink
Hallo Michael,
Post by Michael Groß
ich habe ein geschütztes Arbeitblatt, bei dem mehrere Zellen zur Eingabe von
Daten ungeschützt sind. Ich möchte wenn nun die ungeschützte Zelle F3,
DropDownListe mit den Auswahlmöglichkeiten 0;rot;blau, den Wert 0 hat
nachträglich den Bereich F4:H27 per VBA schützen.
Die Private Sub Worksheet_SelectionChange Prozedur habe ich in dem Blatt
schon mal verwendet.
Blattschutz aufheben, entsprechende Zellen über Zelle formatieren => Schutz
wieder sperren und dann Blatt wieder schützen.
ActiveSheet.Unprotect
Range("F3,F4:H27").Locked = True
ActiveSheet.Protect


Mit freundlichen Grüssen
Claus Busch
--
Win XP PRof SP2 / Vista Ultimate SP2
Office 2003 SP2 /2007 Ultimate SP2
Michael Groß
2009-07-15 09:46:14 UTC
Permalink
Hallo Claus,

erstmal Danke für die schnelle Antwort, aber mir erschließt sich der Sinn
nicht so richtig.
Ich denke es müsste erst geprüft werden ob die Zelle F3=0 ist (DropDownFeld)
und dann soll der Bereich F4:H27 geschützt werden.
Das funktioniert mit deinen Vorschlag so nicht. Oder ich habe etwas falsch
gemacht.

Gruß Michael
Post by Claus Busch
Hallo Michael,
Post by Michael Groß
ich habe ein geschütztes Arbeitblatt, bei dem mehrere Zellen zur Eingabe von
Daten ungeschützt sind. Ich möchte wenn nun die ungeschützte Zelle F3,
DropDownListe mit den Auswahlmöglichkeiten 0;rot;blau, den Wert 0 hat
nachträglich den Bereich F4:H27 per VBA schützen.
Die Private Sub Worksheet_SelectionChange Prozedur habe ich in dem Blatt
schon mal verwendet.
Blattschutz aufheben, entsprechende Zellen über Zelle formatieren => Schutz
wieder sperren und dann Blatt wieder schützen.
ActiveSheet.Unprotect
Range("F3,F4:H27").Locked = True
ActiveSheet.Protect
Mit freundlichen Grüssen
Claus Busch
--
Win XP PRof SP2 / Vista Ultimate SP2
Office 2003 SP2 /2007 Ultimate SP2
Claus Busch
2009-07-15 10:06:09 UTC
Permalink
Hallo Michael,
Post by Michael Groß
Ich denke es müsste erst geprüft werden ob die Zelle F3=0 ist (DropDownFeld)
und dann soll der Bereich F4:H27 geschützt werden.
Das funktioniert mit deinen Vorschlag so nicht. Oder ich habe etwas falsch
gemacht.
ich habe dich leider nicht gleich verstanden. Aber es ist doch kein Problem
hier noch eine Abfrage nach dem Wert von F3 einzufügen:
If Target.Address <> "$F$3" Then Exit Sub

With ActiveSheet
If Target.Value = 0 Then
.Unprotect
.Range("F4:H27").Locked = True
.Protect
Else
.Unprotect
.Range("F4:H27").Locked = False
.Protect
End If
End With


Mit freundlichen Grüssen
Claus Busch
--
Win XP PRof SP2 / Vista Ultimate SP2
Office 2003 SP2 /2007 Ultimate SP2
Michael Groß
2009-07-15 11:46:31 UTC
Permalink
Hallo Claus,

der Code ist schon fast perfekt, allerdings hat sich meine Idee, den
Zellbereich von F4:G27 zu sperren als untauglich erwiesen. Ich muss die
Zellen (8 Stück) namentlich sperren.
Wie muss ich deinen Code anpassen ?

Herzlichen Dank
Michael
Post by Claus Busch
Hallo Michael,
Post by Michael Groß
Ich denke es müsste erst geprüft werden ob die Zelle F3=0 ist (DropDownFeld)
und dann soll der Bereich F4:H27 geschützt werden.
Das funktioniert mit deinen Vorschlag so nicht. Oder ich habe etwas falsch
gemacht.
ich habe dich leider nicht gleich verstanden. Aber es ist doch kein Problem
If Target.Address <> "$F$3" Then Exit Sub
With ActiveSheet
If Target.Value = 0 Then
.Unprotect
.Range("F4:H27").Locked = True
.Protect
Else
.Unprotect
.Range("F4:H27").Locked = False
.Protect
End If
End With
Mit freundlichen Grüssen
Claus Busch
--
Win XP PRof SP2 / Vista Ultimate SP2
Office 2003 SP2 /2007 Ultimate SP2
Claus Busch
2009-07-15 12:04:38 UTC
Permalink
Hallo Michael,
Post by Michael Groß
Ich muss die
Zellen (8 Stück) namentlich sperren.
Wie muss ich deinen Code anpassen ?
ich verstehe deine Frage nicht. Was meinst du mit 8 Zellen namentlich
sperren?
Gebe die Zelladressen in den Range-Ausdruck kommagetrennt ein, z.B. so:
.Range("F4,G8,H12,I13")oder auch
.Range("F4:F5,G5:G6,H7:H8")


Mit freundlichen Grüssen
Claus Busch
--
Win XP PRof SP2 / Vista Ultimate SP2
Office 2003 SP2 /2007 Ultimate SP2
Michael Groß
2009-07-15 12:39:58 UTC
Permalink
Hallo Claus,

ich habe den Code wie folgt angepasst :

'Zellen bei einer Person sperren

If Target.Address <> "$F$3" Then Exit Sub

With ActiveSheet
If Target.Value = 0 Then
.Unprotect ("migro")
.Range("F4,F5,F7,F8,F9,F12,F14,F20,G23").Locked = True
.Protect ("migro")
Else
.Unprotect ("migro")
.Range("F4,F5,F7,F8,F9,F12,F14,F20,G23").Locked = False
.Protect ("migro")
End If
End With

Ich bekomme aber die Fehlermeldung: Laufzeitfehler '1004' Die
Locked-Eigenschaft des Range-objektes kann nicht festgelegt werden.
Wo klemmt es bei mir noch ?

Danke Michael
Post by Claus Busch
Hallo Michael,
Post by Michael Groß
Ich muss die
Zellen (8 Stück) namentlich sperren.
Wie muss ich deinen Code anpassen ?
ich verstehe deine Frage nicht. Was meinst du mit 8 Zellen namentlich
sperren?
.Range("F4,G8,H12,I13")oder auch
.Range("F4:F5,G5:G6,H7:H8")
Mit freundlichen Grüssen
Claus Busch
--
Win XP PRof SP2 / Vista Ultimate SP2
Office 2003 SP2 /2007 Ultimate SP2
Claus Busch
2009-07-15 12:52:28 UTC
Permalink
Hallo Michael,
Post by Michael Groß
.Range("F4,F5,F7,F8,F9,F12,F14,F20,G23").Locked = True
könntest du zu
.Range("F4:F5,F7:F9,F12,F14,F20,G23").Locked = True
zusammenfassen.


Mit freundlichen Grüssen
Claus Busch
--
Win XP PRof SP2 / Vista Ultimate SP2
Office 2003 SP2 /2007 Ultimate SP2
Michael Groß
2009-07-15 13:33:23 UTC
Permalink
Hallo Claus,

der Code läuft nicht durch.

Else
.Unprotect ("migro")
.Range("F4:F5,F7:F9,F12,F14,F20,G23").Locked = False <--- hier
bleibt er stehen und der Debugger kommt
.Protect ("migro")
End If

Dann ist das ganze Blatt ohne Schutz.
Irgendwo ist noch ein Hacken, aber wo. Evtl könnest du nochmal
drüberschauen.

Danke
Michael
Post by Claus Busch
Hallo Michael,
Post by Michael Groß
.Range("F4,F5,F7,F8,F9,F12,F14,F20,G23").Locked = True
könntest du zu
.Range("F4:F5,F7:F9,F12,F14,F20,G23").Locked = True
zusammenfassen.
Mit freundlichen Grüssen
Claus Busch
--
Win XP PRof SP2 / Vista Ultimate SP2
Office 2003 SP2 /2007 Ultimate SP2
Claus Busch
2009-07-15 13:44:19 UTC
Permalink
Hallo Michael,
Post by Michael Groß
Else
.Unprotect ("migro")
.Range("F4:F5,F7:F9,F12,F14,F20,G23").Locked = False <--- hier
bleibt er stehen und der Debugger kommt
.Protect ("migro")
End If
deaktiviere den Blattschutz händisch und bringe deinen gewünschten Bereich
händisch auf den gleichen Stand - entweder alle Zellen im Bereich gesperrt
oder entsperrt. Schütze dann wieder händisch, dann sollte der Code laufen.
Falls nicht dann gehe jede einzelne Zelle deines Bereiches durch:
For each c in .Range("F4:F5,F7:F9,F12,F14,F20,G23")
if c.locked=true then
c.locked=false
end if
next


Mit freundlichen Grüssen
Claus Busch
--
Win XP PRof SP2 / Vista Ultimate SP2
Office 2003 SP2 /2007 Ultimate SP2
Claus Busch
2009-07-15 15:51:58 UTC
Permalink
Hallo Michael,
Also ich möchte wenn es nur eine Person gibt, auch nur die Felder für diese
Person bearbeiten können, ansonsten d.h. bei zwei Personen sollen auch beide
zu bearbeiten sein.
warum dann nicht gleich den ganzen Bereich F4:G23 sperren? Schau mal hier
rein:
http://www.claus-busch.de/Excel/Test.xls


Mit freundlichen Grüssen
Claus Busch
--
Win XP PRof SP2 / Vista Ultimate SP2
Office 2003 SP2 /2007 Ultimate SP2
Michael Groß
2009-07-15 16:09:28 UTC
Permalink
Hallo Claus,

erstmal vielen Dank für deine geduldige Hilfe.
Nun zu meinem Problem, wenn ich deinen Vorschlag so nehme, sind bei der
Aktivierung der zweiten Person dann alle Zellen im Bereich F4:G23 wieder
aktiv, das heisst es können auch Zellen bearbeitet werden in die eigentlich
gar nicht dafür vorgesehen sind. Und genau das will ich nicht. Es sollen nur
die frablich hervorgehobenen Zellen zur Bearbeitung freingegeben werden.

Gruß
Michael
Post by Claus Busch
Hallo Michael,
Also ich möchte wenn es nur eine Person gibt, auch nur die Felder für diese
Person bearbeiten können, ansonsten d.h. bei zwei Personen sollen auch beide
zu bearbeiten sein.
warum dann nicht gleich den ganzen Bereich F4:G23 sperren? Schau mal hier
http://www.claus-busch.de/Excel/Test.xls
Mit freundlichen Grüssen
Claus Busch
--
Win XP PRof SP2 / Vista Ultimate SP2
Office 2003 SP2 /2007 Ultimate SP2
Michael Groß
2009-07-15 16:43:43 UTC
Permalink
Hallo Claus,

ich merke gerade, dass das Löschen der Eingabefelder durch den geänderten
Zugriffsschutz auch nicht mehr funktioniert.
Jetzt wird es mir langsam unheimlich, ich bin doch ein absoluter Newbie mit
VBA.
Wie wäre denn das auszuhebeln ?

Gruß Michael
Post by Claus Busch
Hallo Michael,
Also ich möchte wenn es nur eine Person gibt, auch nur die Felder für diese
Person bearbeiten können, ansonsten d.h. bei zwei Personen sollen auch beide
zu bearbeiten sein.
warum dann nicht gleich den ganzen Bereich F4:G23 sperren? Schau mal hier
http://www.claus-busch.de/Excel/Test.xls
Mit freundlichen Grüssen
Claus Busch
--
Win XP PRof SP2 / Vista Ultimate SP2
Office 2003 SP2 /2007 Ultimate SP2
Claus Busch
2009-07-15 17:07:00 UTC
Permalink
Hallo Michael,
Post by Michael Groß
ich merke gerade, dass das Löschen der Eingabefelder durch den geänderten
Zugriffsschutz auch nicht mehr funktioniert.
logisch, wenn das Blatt geschützt ist, kannst du daran nichts ändern. Weder
eingeben noch löschen.
Ein Vorschlag: Entferne diese 2. Tabelle, mache dir einen Button "Weitere
Person" und wenn dieser angeklickt wird, läßt du dir die 2. Tabelle mit den
Formaten, Gültigkeiten und Formeln neu erstellen.


Mit freundlichen Grüssen
Claus Busch
--
Win XP PRof SP2 / Vista Ultimate SP2
Office 2003 SP2 /2007 Ultimate SP2
Michael Groß
2009-07-15 17:52:35 UTC
Permalink
Hallo Claus,

das wird wohl das "Einfachste" sein, ich werde mir das mal vornehmen, wenn
es nur noch um die Kosmetik meiner Mappe geht, jetzt steht erstmal die
Funktionalität im Vordergrund. Trotzdem wieder jede Menge gelernt.

Vielen Dank und viele Grüße
Michael
Post by Claus Busch
Hallo Michael,
Post by Michael Groß
ich merke gerade, dass das Löschen der Eingabefelder durch den geänderten
Zugriffsschutz auch nicht mehr funktioniert.
logisch, wenn das Blatt geschützt ist, kannst du daran nichts ändern. Weder
eingeben noch löschen.
Ein Vorschlag: Entferne diese 2. Tabelle, mache dir einen Button "Weitere
Person" und wenn dieser angeklickt wird, läßt du dir die 2. Tabelle mit den
Formaten, Gültigkeiten und Formeln neu erstellen.
Mit freundlichen Grüssen
Claus Busch
--
Win XP PRof SP2 / Vista Ultimate SP2
Office 2003 SP2 /2007 Ultimate SP2
Claus Busch
2009-07-15 17:58:27 UTC
Permalink
Hallo Michael,
Post by Michael Groß
das wird wohl das "Einfachste" sein, ich werde mir das mal vornehmen, wenn
es nur noch um die Kosmetik meiner Mappe geht, jetzt steht erstmal die
Funktionalität im Vordergrund. Trotzdem wieder jede Menge gelernt.
du machst dir die Schwierigkeiten durch deine verbundenen Zellen. Hebe den
Verbund auf und mach die Spaltenbreite größer. Den optischen Eindruck
kannst du dann durch links- oder rechtsbündig oder mittig herstellen.


Mit freundlichen Grüssen
Claus Busch
--
Win XP PRof SP2 / Vista Ultimate SP2
Office 2003 SP2 /2007 Ultimate SP2
Claus Busch
2009-07-15 18:02:34 UTC
Permalink
Hallo Michael,

das gleiche Aussehen wie mit verbundenen Zellen kannst du erreichen, wenn
du z.B. eine Eingabe in F4 machst, dann F4:G4 markierst und auf Format
=>Zellen => Ausrichtung => horizontal und dort wählst du "über Auswahl
zentriert". Dann kannst du die Zelle aber sehr gut mit F4 ansprechen.


Mit freundlichen Grüssen
Claus Busch
--
Win XP PRof SP2 / Vista Ultimate SP2
Office 2003 SP2 /2007 Ultimate SP2
Michael Groß
2009-07-16 11:09:20 UTC
Permalink
Hallo Claus,

vielen Dank für die test.xls, ich habe schon mal kurz reingeschaut und es
sieht sehr viel versprechend aus. Ich werde das heute Abend mal ausgiebeig
testen. Genau wie deine anderen Tips, die absolute Spitze sind. Die
verbundenen Zellen werde ich zukünftg auf jeden Fall vermeiden,
da hatte ich schon mehrfach Problem bei der Weiterverarbeitung der Daten.

Vielen, vielen Dank
Michael
Post by Claus Busch
Hallo Michael,
das gleiche Aussehen wie mit verbundenen Zellen kannst du erreichen, wenn
du z.B. eine Eingabe in F4 machst, dann F4:G4 markierst und auf Format
=>Zellen => Ausrichtung => horizontal und dort wählst du "über Auswahl
zentriert". Dann kannst du die Zelle aber sehr gut mit F4 ansprechen.
Mit freundlichen Grüssen
Claus Busch
--
Win XP PRof SP2 / Vista Ultimate SP2
Office 2003 SP2 /2007 Ultimate SP2
Loading...