2016-11-21 3 views
0

Как защитить лист, чтобы пользователь мог сортировать таблицу?Сортировка таблицы с защищенным листом

у меня есть:

  1. Locked заголовок таблицы
  2. разблокирована клетки в таблице
  3. Protected лист с sort, Select unlocked cells и AutoFilter проверяемого.

Если я нажимаю на кнопку рядом с заголовком я могу фильтровать свою таблицу, но если я хочу, чтобы уладить это ... Я получаю сообщение об ошибке:

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

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

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

Большое спасибо за ваши ответы!

* изм

Может быть, это возможно только с VBA (добавлен Tag VBA)

+0

Применить защиту листа. Отмените выбор всего, кроме «Использовать автофильтр» – Tom

ответ

0

Я также искал ответ на это на некоторое время и, к сожалению, я не думаю, что это возможно без vba. Кроме того, я не думаю, что есть событие, запущенное нажатием на кнопки фильтра/сортировки в заголовках столбцов, поэтому вам нужно будет добавить кнопку (-ы), которая запускает следующий примерный код (должен быть скорректирован с учетом ваших потребностей) :

Sub sortColumn() 
'Unprotect sheet (Change "password" or remove it if you don't have any) 
ActiveSheet.Unprotect Password:="password" 

'Use Sort function (you can use the macro recorder to find the right code for other sorting/filter-options) 
'Adapt Sheetname and Range of table to your needs 
Sheets(1).AutoFilter.Sort.SortFields.Clear 
Sheets(1).AutoFilter.Sort.SortFields.Add Key:= _ 
    Range("A1:A10"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption _ 
    :=xlSortNormal 
With ActiveWorkbook.Worksheets(1).AutoFilter.Sort 
    .Header = xlYes 
    .MatchCase = False 
    .Orientation = xlTopToBottom 
    .SortMethod = xlPinYin 
    .Apply 
End With 

ActiveSheet.Protect Password:="password" 

End Sub 

Совершенное решение может быть создать User-форму, в которой пользователь может выбрать столбец (ы), он хочет разобраться и порядка сортировки (по убыванию/по возрастанию).