222 Aufrufe
Gefragt in Tabellenkalkulation von szr2d Einsteiger_in (7 Punkte)

Hallo, ich habe folgendes Anliegen.

Wenn in der Zelle "E4" eine 1,2,3 oder eine 4 steht, sollen bestimmte Zellen gesperrt werden. Also das Tabellenblatt soll mit PW freigegeben werden, die Zellen sollen gesperrt werden und das Blatt soll wieder gesperrt werden. Ich habe etwas geschrieben, aber es funktioniert irgendwie gar nicht(((

Private Sub Worksheet_FormatChange(ByVal Target As Range)

Application.EnableEvents = False

Me.Unprotect "Lok"
If InStr(Range("E4").Value, "1") > 0 Then
Range("F39,F42,F93,F96").Locked = True
Worksheets("7 Herstellanweisung").Protect
End If

If InStr(Range("E4").Value, "2") > 0 Then
Range("F28,F29,F39,F42,F51,F53,F62,F63,F69,F93,F96").Locked = True
Worksheets("7 Herstellanweisung").Protect
End If

If InStr(Range("E4").Value, "3") > 0 Then
Range("F19,F20,F38").Locked = True
Worksheets("7 Herstellanweisung").Protect
End If

If InStr(Range("E4").Value, "4") > 0 Then
Range("F38,F93,F96").Locked = True
Worksheets("7 Herstellanweisung").Protect
End If

Me.Protect "Lok"
Application.EnableEvents = True

End Sub

Hoffentlich könnt ihr mir helfen, ich bin langsam am Verzweifeln...

3 Antworten

0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)

Hallo,

soll das Makro per Hand oder automatisch ausgelöst werden? Wenn das automatisch ausgelöst werden soll, dann müsstest du das Worksheet-Change-Ereignis nehmen.

Und warum sperrst du dann noch das Worksheet "7 Herstellungsanweisung"? Ist das das (aktuelle) Blatt, auf dem die Zellen gesperrt werden sollen? Und soll in den Zellen nur eine Zahl zwischen 1 und 4 stehen oder muss nur ein Zahlenwert enthalten sein? Denn wenn in deiner Zelle E4 der Wert 1234 steht, sind alle Bedingungen wahr und alle Zellen werden gesperrt.

Und natürlich musst du den Code in das VBA-Projekt des betreffenden Arbeitsblattes kopieren.

Gruß

M.O.

0 Punkte
Beantwortet von szr2d Einsteiger_in (7 Punkte)

Also es soll automatisch ausgeführt werden. Ansonsten muss ich dazu sagen, dass ich ziemlicher VBA Noob bin und die ganzen Sachen habe ich durch Google aus mehreren Foren zusammengeschnipselt^^

Ich habe das Ganze im betroffenen Arbeitsblatt, was "7 Herstellanweisung" heißt. Da sind insgesamt zwei Codes. Eins ist dafür da, dass die Zellen immer gesperrt werden, wenn da von jemanden was eingegeben wird, der schaut so aus:

Option Explicit

Sub Worksheet_Change(ByVal Target As Range)
With Target
Me.Unprotect "Lok"
Range("H1").Interior.ColorIndex = 9
Application.EnableEvents = False
.Locked = True
Application.EnableEvents = True
Me.Protect "Lok"
End With
End Sub

Und in das gleiche Tabellenblatt kommt jetzt noch der Code von oben. Der soll automatisch auslösen, wenn in der Zelle "E4" eine Zahl zwischen 1 und 4 per "Sverweis" übernommen wird. Beim Öffnen ist quasi immer leer, dann wird ein Format geladen, was eine Kennnummer 1 bis 4 hat.

0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo,

wenn der Wert in der Zelle E4 durch eine SVERWEIS-Formel ermittelt wird, dann hast du das Problem ist, dass die SVERWEIS-Formel kein Change-Ereignis auslöst. Du musst also per Code prüfen, welcher Zahl das Suchkriterium aus der SVERWEIS-Formel entspricht, damit du die betreffenden Zellen sperren kannst.

Da ich den Aufbau deiner Tabelle nicht kenne, kann ich dir hierzu aber keine weiteren Tipps geben.

Gruß

M.O.
...