Я пытаюсь адаптировать следующий код, чтобы заблокировать соседние ячейки, когда колонна M содержит «NO»Блокировка смежной ячейки, если ячейка содержит определенный текст
Например, если M12 содержит «NO», я хотел бы, чтобы заблокировать «V12 : AG12, AI12: AT12"
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rng1 As Range
Dim c As Range
Set rng1 = Intersect(Target, Range("M:M"))
If rng1 Is Nothing Then Exit Sub
ActiveSheet.Unprotect Password:="Password"
With Application
.ScreenUpdating = False
.EnableEvents = False
End With
For Each c In rng1
Select Case LCase(c.Value)
Case Is = "YES"
ActiveSheet.Unprotect Password:="Password"
Cells(c.Row, 13).Resize(1, 12).Locked = False
Range(Cells(c.Row, "V"), Cells(c.Row, "AG")).Locked = False
Range(Cells(c.Row, "AI"), Cells(c.Row, "AT")).Locked = False
ActiveSheet.Protect Password:="Password"
Case Is = "NO"
ActiveSheet.Unprotect Password:="Password"
Range(Cells(c.Row, "V"), Cells(c.Row, "AG")).Locked = True
Range(Cells(c.Row, "AI"), Cells(c.Row, "AT")).Locked = True
ActiveSheet.Protect Password:="Password"
Case Else
ActiveSheet.Unprotect Password:="Password"
MsgBox "Please only input YES or NO in this column", vbCritical + vbOKOnly
ActiveSheet.Protect Password:="Password"
Exit Sub
End Select
Next c
With Application
.ScreenUpdating = True
.EnableEvents = True
End With
ActiveSheet.Protect Password:="Password"
End Sub
Однако я запутался в , где я бы вставить условие „НЕТ“ в приведенном выше коде, а также как выбрать диапазон „Lock“
Прикрепленный изображение, демонстрирующее, что я пытаюсь достичь.
Благодаря
Спасибо, что так быстро посмотрели! Очень ценно, функция блокировки, похоже, не работает. Я думаю, что это связано с защитой моего листа. Я немного поместил ваш код, но он все равно не блокирует соседние ячейки, когда условие «НЕТ». См. Исправленный код (в оригинальном вопросе). У вас есть какие-то дальнейшие идеи о том, как заставить это работать? –
Хорошо, я также добавил защиту паролем (нет необходимости размещать его везде), и поскольку этот модуль является модулем листа, вам лучше использовать 'Me.', чем' ActiveSheet.'. Также будьте осторожны в своем коде, который вы использовали для проверки «НЕТ» и «ДА», но мы тестируем «LCase (c)», поэтому это будет только строчный регистр. – R3uK