4

Я хочу защитить ячейку, в которой есть раскрывающийся список, но все же хочу, чтобы раскрывающийся список работал.

Когда я пытаюсь защитить его, пользователь не может использовать раскрывающийся список для выбора других элементов или макросов.

Я получаю это сообщение об ошибке

"Ячейка или диаграмма, которую вы пытаетесь изменить, защищены и поэтому доступны только для чтения. Чтобы изменить защищенную ячейку или диаграмму, сначала снимите защиту с помощью команды «Незащищенный лист» (вкладка «Обзор», группа «Изменения»). Вам может быть предложено ввести пароль. "

3 ответа3

4

Раскрывающийся список прикреплен к ячейке. Вот где хранятся данные. Проверка будет гарантировать, что данные действительны.

Если вы этого еще не сделали, убедитесь, что ячейка не заблокирована. Щелкните правой кнопкой мыши ячейку, выберите ячейки формата и перейдите на вкладку «Защита». Флажок Заблокировано должен быть снят.

0

На моем компьютере (ПК под управлением Excel 2010) сам выпадающий список, кажется, непосредственно прикреплен к ячейке справа. Поэтому, если я хочу раскрывающийся список в A7, я должен разблокировать как A7, так и B7.

Это может быть ошибкой, но это относительно простое исправление.

0

В защищенных листах:

Вставить ссылку ниже в книгу

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .