VBA: Zellsperre in freigegener Datei
15.03.2021 15:05:53
Berlebeck
folgendes Problem:
Ich habe eine Excel-Arbeitsmappe, auf die mehrere User zeitgleich Zugriff haben sollen (Freigabemodus = aktiv). In dieser Mappe sind bestimmte Zellen von Haus aus gesperrt, um ein Überschreiben zu verhindern.
Per Steuerungselement soll mit folgendem VBA-Code in Spalte A eine neue Fall-ID angelegt werden:
Sub CommandButton1_Click()
Dim chCell As Range
Dim chRng As Range
Set chRng = ActiveSheet.Range("A12:A5000")
'Erst Speichern, um Eingabekonflikte zu vermeiden
ActiveWorkbook.Save
ActiveSheet.Unprotect
'Wenn Spalte A dann neue Fall_ID vergeben
If ActiveCell.Column > 1 Then
MsgBox "ACHTUNG: Bitte wählen Sie eine leere Zelle in Spalte A aus"
ElseIf ActiveCell = "" Then
Sheets("Hilfsdaten").Cells(1, 2) = Application.Max(Sheets("Entwurf").Range("A12:A5000")) + 1
ActiveCell = Sheets("Hilfsdaten").Cells(1, 2)
Else
MsgBox "ACHTUNG: In dieser Zelle gibt es bereits eine Fall-ID"
End If
'Check cell value in body and lock cells with content
For Each chCell In chRng.Cells
If chCell.Value "" Then
chCell.Locked = True
Else
chCell.Locked = False
End If
Next chCell
'Nach Vergabe der Fall-ID erneut speichern, um Eingabekonflikte zu vermeiden
ActiveSheet.Protect DrawingObjects:=True, _
Contents:=True, _
Scenarios:=True, _
AllowFiltering:=True
ActiveWorkbook.Save
End Sub
Das klappt auch soweit ganz ok, allerdings hätte ich gerne die Zellen in Spalte A auch gesperrt, sobald da Inhalt drin steht.
Nachdem ich nun immer einen "Laufzeitfehler 1004 - Unprotect-methode ..." bekomme, vermute ich dass es mit dem Zugriff bzw. Aufheben des freigabe-Modus zusammenhängt. Nachdem ich mit meine rudimentären VBA-Kenntnisse zusammengegooglet habe, stehe ich jetzt allerdings auf dem Schlauch und würde mich über Tipps oder Lösungsansätze sehr freuen.
Vielen Dank vorab und liebe Grüße
Berlebeck