Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Schreibschutz Message box
#1
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

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
Antworten Top
#2
Hi,

weshalb verhinderst Du nicht direkt das Auswählen / Selektieren der geschützten Zellen? Ist doch nur ein Häkchen (entfernen) im Blatt-Schützen-Dialog?
Antworten Top
#3
Das erfüllt nicht meine Kriterien.  Confused
Ich brauche die Messagebox mit der Info, dass sich die Person an den Admin wenden soll.  

Hier erscheint nur leider keine Message Box von mir sondern die standard box von Excel ohne meine Nachricht.
 
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    On Error GoTo ErrorHandler
    ' Prüfen, ob das Blatt geschützt ist
    If Me.ProtectContents = True Then
        ' Prüfen, ob die bearbeitete Zelle in einer gesperrten Spalte liegt
        If Target.Cells.Count = 1 Then
            If Target.Locked Then
                Application.EnableEvents = False
                Application.Undo
                MsgBox "This cell is locked. Please contact Admin.", vbExclamation
            End If
        End If
    End If
ErrorHandler:
    Application.EnableEvents = True
End Sub
Antworten Top
#4
Hi,

aber das Selektieren kommt doch vor der Änderung - und für die Messagebox beim Selektieren hast Du doch einen funktionierenden Code mit individueller Messagebox.
Mir eschließt sich der Sinn nicht.
Antworten Top
#5
Moin!
Wie wäre es mit so etwas?
(no VBA needed)
   

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antworten Top
#6
(21.06.2024, 12:41)RPP63 schrieb: Moin!
Wie wäre es mit so etwas?
(no VBA needed)


Gruß Ralf

Hallo RPP63,

auf den ersten Blick sieht das gut aus.
Kannst du mir sagen was du gemacht hast, damit ich das in meinem File probieren kann?

Danke und viele Grüße

Marten
Antworten Top
#7
Ich zeige es Dir mit zwei Screenshots:
   
   

Ist eine Datengültigkeit.
Erlaubt sind nur Einträge mit Länge Null.
Anders ausgedrückt: Keine! Wink

Es ist auch kein Blattschutz gesetzt.
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antworten Top
#8
Hallo RPP63,

danke für deinen Lösungsvorschlag.
Leider kann ich diesen nicht verwenden.

Ich habe in den Zellen 3 Variablen.

- N
- O
- Y

Voreingetragen ist immer das "N".
Mein Macro Sperrt die Zelle, sobald ein "Y" oder "O" eingetragen wurde, sodass es nicht mehr verändert werden kann.
Somit habe ich eine Eingabe von 1 in jedem case.
Oder übersehe ich in deiner Lösung etwas?

Grüße

Marten
Antworten Top
#9
Hi,

sorry, aber die Datenüberprüfung ist so wasserdicht wie ein Schweizer Käse.
1 mal copy & paste - und alles ist dahin...
Antworten Top


Gehe zu:


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