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 SubTabelle9 (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 SubModul 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 SubWorksheet_change funktioniert wohl nicht so ganz .
Hoffe mir kann jemand helfen.
Viele Grüße
Marten


 