Frage von Eatex, 46

Excel 2010 VBA Makro - noch ungeschützte Zellen schützen?

Guten Tag Community,

ich habe die vergangenen Tage mit Excel 2010 ein Prüfprotokoll erstellt, bei dem nur die Zellen ungeschützt sind in welche die Messwerte eingetragen werden sollen. Nun würde ich am Ende des Protokolls gerne einen Button hinzufügen, der alle diese bisher ungeschützten Zellen sperrt, damit das Protokoll nachträglich nicht ohne Passwort  manipuliert werden kann. Ich habe leider noch keine Erfahrungen mit VBA und würde mich freuen, wenn mir jemand sagen könnte, ob diese Idee umsetzbar ist und mir gegebenfalls einen Beispielcode schreiben könnte.

MFG Daniel

Expertenantwort
von Iamiam, Community-Experte für Excel, 17

Für so einfache Abläufe nutzt man am besten den Makrorecorder. Der schreibt zwar auch viel überflüssigen Mist auf (man sieht dort, was man alles festlegen/ändern könnte!), aber die Syntax stimmt.

Erst wenn Bedingungen, Schleifen, Sub-Aufrufe oder sonstwie komplizierter definierte Abläufe ins Spiel kommen, muss man woanders nachhaken.

PS: Passwort: in diesem Fall musst du auch das Modul per Passwort verbergen, denn sonst kann jeder dort das Passwort nachschauen! (dran denken!)


Kommentar von Eatex ,

Ich habe bereits versucht das Makro über den Makrorecorder aufzunehmen, doch dieses funktioniert leider auch nicht :/

 

Expertenantwort
von Oubyi, Community-Experte für Excel, 15

Teste mal:

Private Sub CommandButton1_Click()

If ActiveSheet.ProtectContents = True Then
MsgBox "Zuerst Blattschutz aufheben!"
Exit Sub
End If

Dim zelle As Range
For Each zelle In UsedRange
If zelle.Locked = False Then
zelle.Locked = True
End If
Next zelle
MsgBox "Blattschutz wieder aktivieren!"
End Sub


Hierbei muss der Blattschutz manuell aufgehoben und aktiviert werden.
Man kann das auch vom Code übernehmen lassen. Dann muss aber das Passwort bekannt sein oder abgefragt werden.
Frage nochmal nach, wenn Du DAS brauchst.

Teste auf jeden Fall genau.


Kommentar von Eatex ,

Danke für das Beispiel, aber leider bekomme ich bei diesem Makro folgende Fehlermeldung: "Laufzeitfehler `1004´: Die Locked-Eigenschaft des Range-Objektes kann nicht festgelegt werden :/

Kommentar von Oubyi ,

Das kann ich nicht nachvollziehen.
Hast Du den Code EXAKT so übernommen, wie er oben steht?
Den Fehler 1004 kann ich nur reproduzieren, wenn das Blatt noch geschützt ist, DANN würde der Code oben aber erst gar nicht ausgeführt, wegen:

If ActiveSheet.ProtectContents = True Then
MsgBox "Zuerst Blattschutz aufheben!"
Exit Sub

Keine passende Antwort gefunden?

Fragen Sie die Community