21.06.2024, 10:49
Hallo,
ich habe ein Excel File, wo ich nur Ausgewählte Zellen schreibgeschützt habe.
Ich möchte gerne, dass sich eine Message box öffnet, sobald jemand versucht die schreibgeschützte Zelle zu Ändern mit z.B. please contact Admin.
Bisher kommt immer die Standard Info von Excel..
Zur Zeit öffnet sich die Message box, aber immer nur sobald man auf die Zelle klickt. Nicht wenn man versucht diese zu Ändern.
Meine lösungen sind derzeit über chatgpt erzeugt, da ich ein Anfänger bin.
Hier sind meine Codes:
DieseArbeitsmappe
Tabelle9 (Customer (PCN+) vs product)
Modul 1
Worksheet_change funktioniert wohl nicht so ganz .
Hoffe mir kann jemand helfen.
Viele Grüße
Marten
ich habe ein Excel File, wo ich nur Ausgewählte Zellen schreibgeschützt habe.
Ich möchte gerne, dass sich eine Message box öffnet, sobald jemand versucht die schreibgeschützte Zelle zu Ändern mit z.B. please contact Admin.
Bisher kommt immer die Standard Info von Excel..
Zur Zeit öffnet sich die Message box, aber immer nur sobald man auf die Zelle klickt. Nicht wenn man versucht diese zu Ändern.
Meine lösungen sind derzeit über chatgpt erzeugt, da ich ein Anfänger bin.
Hier sind meine Codes:
DieseArbeitsmappe
Code:
Private Sub Workbook_Open()
Call SperrenZellen
End Sub
Tabelle9 (Customer (PCN+) vs product)
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo ErrorHandler
' Stelle sicher, dass wir auf der richtigen Zelle reagieren
If Target.Locked Then
Application.EnableEvents = False
Application.Undo
MsgBox "Please contact Admin", vbExclamation
End If
ErrorHandler:
Application.EnableEvents = True
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Cells.Count = 1 Then
If Target.Locked Then
MsgBox "This cell is locked. Please contact Admin.", vbExclamation
End If
End If
End Sub
Modul 1
Code:
Sub SperrenZellen()
Dim ws As Worksheet
Dim cell As Range
Dim lastRow As Long
Set ws = ThisWorkbook.Sheets("Customer (PCN+) vs product")
' Alle Zellen entsperren
ws.Cells.Locked = False
' Spalten A bis N und AF bis Ende sperren
ws.Range("A:N,AF:XFD").Locked = True ' 'XFD' ist die letzte Spalte in Excel
' Letzte benutzte Zeile in Spalte V finden
lastRow = ws.Cells(ws.Rows.Count, "V").End(xlUp).Row
' Zellen in Spalte V überprüfen und sperren/entsperren
For Each cell In ws.Range("V1:V" & lastRow)
If cell.Value = "Y" Or cell.Value = "O" Then
cell.Locked = True
Else
cell.Locked = False
End If
Next cell
' Blattschutz aktivieren
ws.Protect Password:="****", UserInterFaceOnly:=True
End Sub
Worksheet_change funktioniert wohl nicht so ganz .
Hoffe mir kann jemand helfen.
Viele Grüße
Marten