Код VBA не работает

У меня есть следующий код VBA:

вопрос

 Private Sub Worksheet_Change (ByVal Target As Range) Dim cRow As Integer, если Intersect (Target, Range ("R11: R20")) ничего не значит, затем выйдите из Sub, если Target.Value = "F", затем ActiveSheet.Unprotect cRow = Target.Row Range (Ячейки (cRow, "T"), Ячейки (cRow, "U")). Locked = True ActiveSheet.Protect End If If Target.Value = "T" или Target.Value = "" Тогда ActiveSheet.Unprotect cRow = Target .Row Range (Ячейки (cRow, "T"), Ячейки (cRow, "U")). Locked = False ActiveSheet.Protect End If End Sub 

Что мне нужно, так это очистить содержимое (cRow target.Row) в верхнем регистре, прежде чем оно будет заблокировано.

  • У меня есть лист Excel для расчета сверхурочных, включающий несколько строк для каждого месяца, и лист защищен, но позволяет пользователю вводить данные в некоторый заданный диапазон (P11: P20, R11: X20) (Разрешить пользователю редактировать диапазон).
  • Кроме того, Range (R11: R20) - это строки с выпадающим списком из 4 значений (1, 2, 3, 4).
  • Мой случай: например, если пользователь выбрал либо значение 3, либо ТОЛЬКО 4 в ячейке (R15), мне нужно заблокировать или защитить диапазон (T15: U15), и если затем с тем же листом выбрано значение 3 или 4 в ячейке R19 чтобы защитить диапазон (T19: U19) и так далее.
  • Поэтому мне нужно, чтобы в определенной ячейке было выбрано какое-то значение, чтобы защитить некоторые диапазоны в одной строке. Обратите внимание, что пользователь может выбрать один или несколько вариантов на одном листе.

Решение

Для вашего текущего запроса я предположил, что вы хотите очистить содержимое столбцов T и U целевой строки.

 Private Sub Worksheet_Change (ByVal Target As Range) Dim cRow As Integer, если Intersect (Target, Range ("R11: R20")) ничего не значит, затем выйдите из Sub, если Target.Value = "F", затем ActiveSheet.Unprotect cRow = Target.Row With Range (Cells (cRow, "T"), Cells (cRow, "U")) .ClearContents .Locked = True Конец с ActiveSheet.Protect End If If Target.Value = "T" или Target.Value = "" Then ActiveSheet .Unprotect cRow = Target.Row Range (Ячейки (cRow, "T"), Ячейки (cRow, "U")). Locked = False ActiveSheet.Protect End If End Sub 

Спасибо TrowaD за этот совет.

Предыдущая статья Следующая статья

Лучшие советы