Blattschutz
#1
Hallo, habe ein Problem und komme einfach nicht weiter – bitte um Hilfestellung.
 
Habe eine Arbeitsmappe mit 4 Tabellen:
1)      Tabelle Daten
2)      Tabelle Betrag
3)      Tabelle Vorlage
4)      Tabelle Rechnungssumme
 
In allen Tabellen werden Daten eingegeben. Z.B. in der Tabelle Vorlage in der Zelle „A10“ und in der Tabelle Rechnungssumme „E8“ – alle anderen Zellen werden
unter Zellen formatieren – Schutz – gesperrt und ausgeblendet und weiters darüber einen Blattschutz ohne Passwort gelegt.
Mein Problem:
Die beiden tieferstehenden VBA Anweisungen funktionieren einwandfrei.
Nur: es werden bei der Anweisung „Blattschutz setzen“ z.B. auch die beiden nicht geschützten Zellen auch geschützt werden und eine Eingabe ist dann nicht mehr möglich.
Der Blattschutz sollte wieder so gesetzt werden wie vor „Blattschutz aufheben.
 
Sub Druckbereich()
 
Blattschutz aufheben
For Each WsTabelle In Sheets
WsTabelle.Unprotect
Next WsTabelle
 
Weitere Anweisungen ……………………….
 
 
Blattschutz setzen
For Each WsTabelle In Sheets
WsTabelle.Protect
Next WsTabelle
 
Ende Sub

Lg Ubi5
Antworten Top
#2
Hi,

das kann eigentlich nicht sein. Beispieldatei?

LG, Alexandra
Antworten Top
#3
Hallo Alexandra, du hast recht habe in der Tabelle "Daten" vergessen gewisse Zellen den Schutz zu deaktivieren - funktioniert einwandfrei.
Habe aber eine andere Frage.
Ist es möglich die Tabelle "Rechnungssumme" vom Blattschutz setzen/aufheben auszunehmen?

Lg Ubi5
Antworten Top
#4
Hi,

so:

Blattschutz aufheben
For Each WsTabelle In Sheets
if ws.name <> "Rechnungsumme" then
WsTabelle.Unprotect
end if
Next WsTabelle

LG, Alexandra
Antworten Top
#5
Hallo Alexandra, leider ein Fehler

For Each WsTabelle In Sheets
If ws.Name <> "Rechnungsumme" Then
WsTabelle.Unprotect
End If
Next WsTabelle

Dim ReNr As Variant, rFind As Range
ReNr = Sheets("Vorlage").Range("A10")

Bringt bei If ....... einen Fehler - Laufzeitfehler 424 - Objekt erforderlich!

Lg Ubi5
Antworten Top
#6
In "Rechnungsumme" fehlt ein s.
Schöne Grüße
Berni
Antworten Top
#7
Danke für den Hinweis - habe ich vorher schon berücksichtigt!

Lg Ubi5
Antworten Top
#8
For Each WsTabelle In Sheets
If wsTabelle.Name <> "Rechnungssumme" Then
WsTabelle.Unprotect
End If
Next WsTabelle
Schöne Grüße
Berni
Antworten Top
#9
Danke für die Korrektur Berni! :)
Antworten Top
#10
Hallo Alexandra,

habe den Tippfehler korrigiert - funktioniert leider aber nicht.


For Each WsTabelle In Sheets
If ws.Name <> "Rechnungssumme" Then
WsTabelle.Unprotect
End If
Next WsTabelle

Dim ReNr As Variant, rFind As Range
ReNr = Sheets("Vorlage").Range("A10")

Bringt bei If ....... einen Fehler - Laufzeitfehler 424 - Objekt erforderlich!

Lg Ubi5
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste