Я хочу защитить ячейку, в которой есть раскрывающийся список, но при этом хочу, чтобы раскрывающийся список работал.
Когда я пытаюсь защитить его, пользователь не может использовать раскрывающийся список для выбора других элементов или макросов.
Я получаю это сообщение об ошибке
«Ячейка или диаграмма, которую вы пытаетесь изменить, защищена и, следовательно, доступна только для чтения. Чтобы изменить защищенную ячейку или диаграмму, сначала снимите защиту с помощью команды «Незащищенный лист» (вкладка «Рецензирование», группа «Изменения»). Вам может быть предложено ввести пароль».
решение1
Выпадающий список прикреплен к ячейке. Там он хранит данные. Проверка гарантирует, что данные действительны.
Если вы еще этого не сделали, убедитесь, что ячейка не заблокирована. Щелкните правой кнопкой мыши по ячейке и выберите формат ячеек, а затем перейдите на вкладку Защита. Флажок Заблокировано должен быть снят.
решение2
Я думаю, что этот вопрос мог быть неправильно истолкован. Если так, и если я правильно его интерпретирую, вот решение.
Excel на самом деле позволяет пользователю электронной таблицы перезаписывать ячейку, которая использует список проверки; если список включал значения «Яблоко», «Персик» и «Апельсин», стандартная операция позволяет пользователю ввести «Брокколи» в ячейку, если она не защищена, как если бы к ней не был прикреплен список проверки. Однако защита ячейки и рабочего листа отключает возможность выбора элемента из списка проверки, и это может быть проблемой.
Если проблема именно в этом, вот решение:
1. Format the cell using the validation list so it's
unprotected.
2. With the cursor positioned at that cell, open the
Validation menu origintally used to identify the validation
list.
3. On the Settings tab of the Data Validation window pane,
be sure that "ignore blank" is unchecked, and
continue to leave that window pane open.
4. On the "Error alert" tab of the Data Validation window
pane:
a) Be sure "Show error alert after invalid data is
entered" is checked.
b) Select "Stop" under the "Style" heading.
c) Give your error alert a name under "Title"; this
can be anything, but a short title is best.
d) Under "Error message", type a short message that you
want to appear if a user tries to manually type a value
in the cell - something like "Please use the drop-down
menu provided to select a value for this cell."
e) Click "OK".
Это не позволит людям вводить что-либо в ячейку, предназначенную для проверки данных, даже если рабочий лист не защищен. Тем не менее, вы можете захотеть защитить рабочий лист, чтобы предотвратить непреднамеренные обновления самого списка проверки данных.
решение3
На моем компьютере (ПК с Excel 2010) сам раскрывающийся список, похоже, прикреплен к ячейке сразу справа. Так что если мне нужен раскрывающийся список в A7, мне нужно разблокировать и A7, и B7.
Это может быть ошибкой, но ее относительно просто исправить.
решение4
В защищенных листах:
Вставьте ссылку ниже в рабочую тетрадь
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim wsh As Variant
For Each wsh In Worksheets(Array("Sheet1"))
wsh.EnableOutlining = True
wsh.Protect UserInterfaceOnly:=True, Password:="", _
DrawingObjects:=False, _
Contents:=True, _
Scenarios:=True, _
AllowFormattingCells:=False, _
AllowFormattingColumns:=False, _
AllowFormattingRows:=False, _
AllowInsertingColumns:=False, _
AllowInsertingRows:=False, _
AllowInsertingHyperlinks:=False, _
AllowDeletingColumns:=False, _
AllowDeletingRows:=False, _
AllowSorting:=False, _
AllowFiltering:=False, _
AllowUsingPivotTables:=False
Next wsh
Dim Oldvalue As String
Dim Newvalue As String
On Error GoTo Exitsub
If Target.Address = "$C$2" Then 'As required
If Target.SpecialCells(xlCellTypeAllValidation) Is Nothing Then
GoTo Exitsub
Else: If Target.Value = "" Then GoTo Exitsub Else
Application.EnableEvents = False
Newvalue = Target.Value
Application.Undo
Oldvalue = Target.Value
If Oldvalue = "" Then
Target.Value = Newvalue
Else
Target.Value = Oldvalue & ", " & Newvalue
End If
End If
End If
Exitsub:
Application.EnableEvents = True
End Sub