2017-08-28 1 views
0

Ich versuche, eine Zellenbasis auf einem anderen Zellenwert zu sperren. Ich habe die Codes benutzt, die einige von euch zur Verfügung gestellt haben und perfekt funktioniert. Ich habe einige andere Codes mit aktivem Blattwechsel und VBA gibt einen Fehler aus. Mit dem folgenden Code funktioniert, aber wenn der Zustand sich geändert hat, erwarte ich, dass die Zelle wieder normal und freigeschaltet wird, aber immer noch gesperrt ist.Erforderlich für die Überprüfung der VBA-Code

Der Code ist:

Private Sub Worksheet_Change(ByVal Target As Range) 
If Target.Address = "$B$7" Then 
ActiveSheet.Unprotect ("mn") 
If Target.Value = 10.4 Then Rows("21:26").EntireRow.Hidden = True 
If Target.Value = 10.4 Then Rows("16").EntireRow.Hidden = True 
If Target.Value <> 10.4 Then Rows("21:26").EntireRow.Hidden = False 
If Target.Value <> 10.4 Then Rows("16").EntireRow.Hidden = False 
End If 
ActiveSheet.Protect ("mn") 
End Sub 

Private Sub Worksheet_Activate() 
ActiveSheet.Unprotect ("mn") 
If [E14] = "N/A" Then 
[G14].Locked = True 
'Remove locked property if E14's value is anything else or is deleted. 
Else 
[G14].Locked = False 
'Optional, reprotect sheet 
End If 

If [E28] = "N/A" Then 
[g28].Locked = True 
'Remove locked property if E28's value is anything else or is deleted. 
Else 
[g28].Locked = False 
'Optional, reprotect sheet 
End If 

If [E38] = "N/A" Then 
[g38].Locked = True 
'Remove locked property if E38's value is anything else or is deleted. 
Else 
[g38].Locked = False 
'Optional, reprotect sheet 
End If 
ActiveSheet.Protect ("mn") 
End Sub 

Dank für Ihre Zeit danken.

+4

Bitte senden Sie den Code als Text kann verwenden, anstatt als Link zu einem Bild. –

+0

Eines Ihrer Verfahren wird ausgeführt, wenn eine Änderung vorgenommen wird. Die andere läuft, wenn das Blatt aktiviert ist. Welcher gibt dir ein Problem? – Variatus

+0

Als Sie für die Überprüfung, Der 2. Teil, Wenn F14 ist nicht gleich "N/A", erwarte ich die Zelle G14 entsperrt werden und ich kann den Wert eingeben. Aber, G14 noch gesperrt! (und dasselbe für andere Zellen.) – MahdiSafa

Antwort

0

Ist Ihre "N/A" durch eine Formel gegeben? denn wenn es haben Sie

isError([F14]) 

Und nur ein Wort statt

If [E14] = "N/A" Then 
    [G14].Locked = True 
    'Remove locked property if E14's value is anything else or is deleted. 
Else 
    [G14].Locked = False 
    'Optional, reprotect sheet 
End If 

Sie

Verwenden
[G14].Locked = ([E14] = "N/A") 
+0

Ja, das Wert in E14 und F14 sind von einer Formel. – MahdiSafa

+0

'[G14] .Locked = ([E14] =" N/A ")' für Richtig oder Falsch. – MahdiSafa

+0

Dieser Code funktionierte perfekt für ein anderes Projekt, war aber auf 'worksweat_change'. Ich habe einen anderen Code mit 'worksweat_change' verwendet und VBA lässt den Code nicht ausführen! – MahdiSafa

Verwandte Themen