Я должен отсортировать защищенный лист и выполнить танец «незащищать-сортировать-защитить».

Проблема заключается в том, что я дублирую (не совсем идеально) собственную сортировочную функцию Excel с предсказуемыми проблемами.

Я установил защиту листа и включил "Сортировку" в окне "Разрешить пользователям этого листа" в окне "Защита листа", но это не работает должным образом.

Я думал тогда попытаться открыть диалог сортировки в Excel (см. Ниже). Это выставлено нам разработчикам?

2 ответа2

0

Откроется диалоговое окно «Сортировка» (протестировано на XL 2010). Если текущий выбор не содержит сортируемый контент, он покажет Msgbox с сообщением об ошибке. Имейте в виду, что если выбран весь столбец, он не будет предлагать пользователю расширить свой выбор, как это обычно делает Excel. Один из вариантов заключается в выборе параметра UsedRange или другого диапазона перед отображением диалогового окна. Вы хотите экспериментировать.

В Excel 2007 включен новый объект Sort, в котором хранятся поля, подлежащие сортировке, но я не вижу, как он взаимодействует с этим диалогом, если он вообще существует.

Вы можете найти список аргументов xlDialogSort здесь.

 Sub ShowSortDialog()

    On Error Resume Next
    Application.Dialogs(xlDialogSort).Show
    If Err.Number = 1004 Then
        MsgBox "Place the cursor in the area to be sorted"
    End If
    Err.Clear

    End Sub
0

Попробуйте использовать автофильтр. Это позволит вам защитить лист и позволить пользователю сортировать столбцы.

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