Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
3 / 0 / 0
Регистрация: 24.01.2013
Сообщений: 11
1

Разграничение прав доступа на области листа

07.02.2013, 10:48. Просмотров 1253. Ответов 8
Метки нет (Все метки)

Задача: сделать так, чтобы лист могли видеть все пользователи, но Группа 1 могла редактировать и добавлять только в одном диапозоне ячеек, а Группа 2 - в другом.
Как это сделать?
Пока смог только прятать листы от разнух групп, в зависимости от Username (пользователи в основном - люди возрастные и в компьютере не особо разбираются, как поменять имя пользователя в exel не найдут). Поскольку в 1-й группе 8 человек, в другой - 12, можно вбить их всех в макрос.

Visual Basic
1
2
3
If Application.UserName = "" Then
Sheets("Доходы").Visible = xlVeryHidden
Sheets("Расходы").Visible = True
Какое свойство можно поставитть вместо Visible (и соответственно какое значение ему придать), чтобы было видно все ячейки, но было раздлеление по диапозонам в части возможности редактирования?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.02.2013, 10:48
Ответы с готовыми решениями:

Разграничение прав доступа в Excel
Добрый день! Как реализовать разграничение прав для пользователей? Допустим у нас имеются 4...

Разграничение прав доступа
Есть таблица, в ней n строк, n столбцов (id integer, gid text, etc...) Как реализовать доступ...

Разграничение прав доступа
Требуется разграничить права доступа, если мы залогинимся под юзером на форме. Тоже самое сделать,...

Разграничение прав доступа
Здравствуйте. Занялся в своей организацией разграничением правд доступа. В ДИ написано, что должен...

8
Заблокирован
07.02.2013, 11:36 2
Лучший ответ Сообщение было отмечено как решение

Решение

Вариант (в модуль эта книга) -
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
Private Sub Workbook_Open()
ActiveSheet.Unprotect
Cells.Locked = False
Select Case Application.UserName
  Case "user1", "user2", "user3", "user4", "user5" 'для перечисленных пользователей
    Columns(1).Locked = True 'запрещаем редактирование первого стобца
  Case "user11", "user12", "user13", "user14", "user15" 'для перечисленных пользователей
    Columns(2).Locked = True 'запрещаем редактирование второго стобца
  Case Else 'для все прочих
    Cells.Locked = True 'запрещаем редактирование всего листа
End Select
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End Sub
3
3 / 0 / 0
Регистрация: 24.01.2013
Сообщений: 11
07.02.2013, 13:01  [ТС] 3
Спасибо! А как отключить всплывающее сообщения? Чтобы не писал "Ячейка защищена от редактирования. Зайдите туда то и отключите то-то". Так даже мои возрастники ее отключят из чистого любопытства.
Строчка Application.DisplayAlerts = False почему-то не помогла.

Добавлено через 12 минут
Отбой. Нашел как сделать.
0
Апострофф
07.02.2013, 13:49
  #4

Не по теме:

Цитата Сообщение от BadNV Посмотреть сообщение
Отбой. Нашел как сделать.
Нашел, так поделись со всеми:)

0
3 / 0 / 0
Регистрация: 24.01.2013
Сообщений: 11
07.02.2013, 13:53  [ТС] 5
Это не через макрос делается.
Вкладка рецензирование - Защитить лист - убрать галочку напротив "выделение заблокированных ячеек". В итоге, те ячейки, которые макрос блокирует для юзера не могут быть выделены, а значит и сообщений не будет.
0
Заблокирован
07.02.2013, 14:03 6
Цитата Сообщение от BadNV Посмотреть сообщение
Это не через макрос делается.
Можно и через макрос
Visual Basic
1
ActiveSheet.EnableSelection = xlUnlockedCells
1
3 / 0 / 0
Регистрация: 24.01.2013
Сообщений: 11
07.02.2013, 15:06  [ТС] 7
Чей-то не помогает эта строчка, все равно сообщение выскакивает.
0
Заблокирован
07.02.2013, 15:27 8
Цитата Сообщение от BadNV Посмотреть сообщение
все равно сообщение выскакивает
Я вставил эту строку после 2-й строки своего варианта. Сообщение выскакивает только при двойном клике и при условии, что весь лист заблокирован, иначе происходит вход в активную ячейку. Возможно, что-то не учтено?
0
3 / 0 / 0
Регистрация: 24.01.2013
Сообщений: 11
07.02.2013, 15:29  [ТС] 9
Пардон, все встало как надо. Так и не понял, где не так сделал. Просто перезалил в VBA твой макрос еще раз.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.02.2013, 15:29

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Разграничение прав доступа к БД
Имеется простенький веб сайт, у которого 3 страницы(homepage, page1, page2), в двух последних...

Разграничение прав доступа.
есть БД в SQL Server 2000 и приложение в Delphi. при запуске приложения появляется форма где...

Разграничение прав доступа Windows 7,8
Здравствуйте скажите пожалуйста как правильно сделать разграничение прав доступа для Админа и...

Разграничение прав доступа БД предприятия
Уважаемые Товарищи ! Первый раз открыл Access 2003. Прошу объясните или помогите кто чем может. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.