Измените критерии сортировки автофильтра в защищенной общей книге, чтобы предоставить персональное представление пользователей - PullRequest
0 голосов
/ 04 мая 2019

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

Моя цель состоит в том, чтобы держатели бюджета могли видеть только свои учетные центры (ЦК) на основании того, что держатель бюджета вводит имя / код владельца бюджета, а затем они вводят свой прогноз / комментарий. Они не должны видеть другие CC держателей бюджета, что означает не показывать стрелки автофильтра и отключать опцию форматирования строк в статусе защищенного листа, что позволяет им выбирать другие CC. Здесь не показаны стрелки автоматического фильтра (https://contexturesblog.com/archives/2012/05/29/hide-arrows-in-excel-autofilter/)

При закрытии / сохранении лист прогноза должен быть возвращен к просмотру, который не отображает ни одной из настроенных строк CC, поэтому следующий держатель бюджета, открывающий файл, не увидит предыдущее настраиваемое представление. Это может быть обработано процедурой события перед сохранением, которая снова скрывает / фильтрует все строки. Лист ввода прогноза представляет собой один лист в рабочей тетради со всеми CC, перечисленными с соответствующим держателем бюджета. Каждый CC находится в одной строке и имеет владельца бюджета, который позволяет скрывать строки / фильтрацию, чтобы получить представление одного владельца бюджета.

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

Интересно, что приведенный ниже код работает в первый раз в общем состоянии, т.е. когда я защищаю книгу, а затем преобразую ее в общий статус. Но когда я сохраняю, закрываю и открываю файл в общем состоянии, я получаю сообщение об ошибке выполнения, в котором говорится, что я не могу запустить этот код на защищенном листе. Один из потоков предлагает поместить первый блок кода в модуль ThisWorkbook, но поскольку защита в общем режиме отключена, это не сработает.

У меня есть обходной путь, который показывает / скрывает строки, полагаясь на включенную опцию форматирования строк при защите листа. Он показывает / скрывает строки на основе того, что владелец бюджета вводит свой код и сбрасывает представление перед закрытием, но это также позволяет пользователю выбрать все строки и показать все CC, если они чувствовали себя любопытными.
Различные потоки в других местах указывают, что автофильтр нельзя использовать в защищенной общей рабочей книге, но ... поскольку приведенный ниже код сработал, хотя бы один раз, прежде чем я сдаюсь, кто-нибудь может подтвердить, есть ли способ достичь цели или это тупик . Приз за возможность настраивать представления пользователей в защищенной общей рабочей книге стоит того, чтобы ее использовать!

Sub ProtectWb()

    With Worksheets("Forecast")
        .Unprotect Password:=Pwd
        .EnableAutoFilter = True
        .Protect Password:=Pwd, Contents:=True, UserinterfaceOnly:=True
    End With

End Sub

Следующий код работает после преобразования книги в общий защищенный статус

Диапазон H6:H240 содержит список кодов бюджетных владельцев

Sub Bud()

    BudCode = InputBox("Enter BudCode")

    Worksheets("Forecast").Range("$H$6:$H$240").AutoFilter Field:=1, Criteria1:=BudCode

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...