Я создал лист Excel, который имеет командную кнопку (Active X Control). Кнопка выбирает и копирует ячейки e2: e16, e106: e117.
Я также добавил код для блокировки или разблокировки ячеек C112 и C116 в зависимости от ячейки C3. Если C3, если «1», ячейки остаются разблокированными, а если «2», ячейки блокируются.
Лист начинает защищаться, поэтому большинство ячеек заблокированы, за исключением тех, которые требуют ввода данных в них.
Когда ActiveSheet.Protect закомментирован "", он копируется правильно, но лист не защищает себя после того, как я изменил C3 на "1" или "2".
Если «ActiveSheet.Protect» не закомментирован, блокировка / разблокировка работает, но он пытается выбрать и скопировать ячейку C3 и игнорирует диапазон, который он должен выбрать и скопировать.
Я бы хотел, чтобы оба работали вместе.
Верхний левый 'ActiveSheet.Protect закомментирован.
Вверху справа после нажатия кнопки «Копировать описание» выбирается и копируется правильная область, но весь лист не защищен.
Внизу слева ActiveSheet.Protect не закомментирован.
Внизу справа после нажатия «Скопировать текст» он выделяет и копирует ячейку C3.
Выбор и копирование ячеек:
Private Sub copyButton_Click()
'Check for blanks'
If Range("c3").Value = "" Or _
Range("c6").Value = "" Or _
Range("c7").Value = "" Or _
Range("c8").Value = "" Or _
Range("c9").Value = "" Or _
Range("c10").Value = "" Or _
Range("c108").Value = "" Or _
Range("e16").Value = "" Or _
Range("e106").Value = "" Or _
Range("e115").Value = "" Then
MsgBox "Required fields are blank."
Exit Sub
Else
'Copy Ranges
Range("e2:e16,e106:e117").Select
Selection.Copy
End If
End Sub
Блокировка / разблокировка ячеек:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'Change cells locked/unlocked
ActiveSheet.Unprotect ""
If Range("C3").Value = "1" Then
Range("C112,c116").Locked = False
Else: Range("C3").Value = "2"
Range("C112,c116").Locked = True
End If
ActiveSheet.Protect ""
End Sub