Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Защита ячеек, строк, столбцов и диапазонов от пользователя - Мир MS Excel

  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_, DrMini  
Защита ячеек, строк, столбцов и диапазонов от пользователя
карандаш Дата: Понедельник, 18.02.2013, 09:37 | Сообщение № 1
Группа: Проверенные
Ранг: Обитатель
Сообщений: 329
Репутация: 8 ±
Замечаний: 0% ±

2010
Здравствуйте!

В экселе можно защитить один или несколько диапазонов от изменений стандартными средствами "разрешить изменение диапазонов"/"защитить лист"
1. это средство защищает весь лист, позволяя оставлять "окна" (бреши) в защите для разреш§нных действий пользователя
2. этот способ защищает диапазоны не только от пользователей, но и от макросов

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

Борода подсказал несколько вариантов защиты ячейки (ячеек) от изменения.

Защита одной строки (первой)
[vba]
Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
       If Target.Row <> 1 Then Exit Sub ' проверяем, что фокус не на первой строке - значит можно редактировать и выходим
       If [A2] = "$$$" Then Exit Sub       ' проверяем, что "пароль" $$$ введен в специально отведëнную для этого ячейку - значит можно редактировать и выходим
       Target.Offset(1).Select           ' уводим фокус с защищаемой строки
End Sub
[/vba]
тоже самое можно сделать со столбцом, заменив [A2] на В1, например

Защита одной ячейки (А1)
[vba]
Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
       If Target.Address(0, 0) <> "A1" Then Exit Sub
       If [A2] = "$$$" Then Exit Sub
       Target.Offset(1).Select
End Sub
[/vba]

хотелось бы получить код в общем виде для подобной защиты

1.1. на несколько строк/столбцов идущих подряд
1.2. на несколько строк/столбцов разбросанных по листу
2. на несколько диапазонов (самый общий случай)

вот что-то такое хотелось бы
[vba]
Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
       If Target.Range <> (Range("D9")+Range("1:3")+Range("N:P")+ Range("С4:С9")+ Range("F4:F9")+ Range("K4:K9")) Then Exit Sub
       If [A4] = "$$$" Then Exit Sub
       Target.Offset(1).Select
End Sub
[/vba]

где "+" - это логическое ИЛИ, а запись носит условный, поясняющий характер

помогите, пожалуйста


Сообщение отредактировал карандаш - Понедельник, 18.02.2013, 10:05
 
Ответить
СообщениеЗдравствуйте!

В экселе можно защитить один или несколько диапазонов от изменений стандартными средствами "разрешить изменение диапазонов"/"защитить лист"
1. это средство защищает весь лист, позволяя оставлять "окна" (бреши) в защите для разреш§нных действий пользователя
2. этот способ защищает диапазоны не только от пользователей, но и от макросов

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

Борода подсказал несколько вариантов защиты ячейки (ячеек) от изменения.

Защита одной строки (первой)
[vba]
Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
       If Target.Row <> 1 Then Exit Sub ' проверяем, что фокус не на первой строке - значит можно редактировать и выходим
       If [A2] = "$$$" Then Exit Sub       ' проверяем, что "пароль" $$$ введен в специально отведëнную для этого ячейку - значит можно редактировать и выходим
       Target.Offset(1).Select           ' уводим фокус с защищаемой строки
End Sub
[/vba]
тоже самое можно сделать со столбцом, заменив [A2] на В1, например

Защита одной ячейки (А1)
[vba]
Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
       If Target.Address(0, 0) <> "A1" Then Exit Sub
       If [A2] = "$$$" Then Exit Sub
       Target.Offset(1).Select
End Sub
[/vba]

хотелось бы получить код в общем виде для подобной защиты

1.1. на несколько строк/столбцов идущих подряд
1.2. на несколько строк/столбцов разбросанных по листу
2. на несколько диапазонов (самый общий случай)

вот что-то такое хотелось бы
[vba]
Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
       If Target.Range <> (Range("D9")+Range("1:3")+Range("N:P")+ Range("С4:С9")+ Range("F4:F9")+ Range("K4:K9")) Then Exit Sub
       If [A4] = "$$$" Then Exit Sub
       Target.Offset(1).Select
End Sub
[/vba]

где "+" - это логическое ИЛИ, а запись носит условный, поясняющий характер

помогите, пожалуйста

Автор - карандаш
Дата добавления - 18.02.2013 в 09:37
Матраскин Дата: Понедельник, 18.02.2013, 09:46 | Сообщение № 2
Группа: Друзья
Ранг: Обитатель
Сообщений: 375
Репутация: 81 ±
Замечаний: 0% ±

20xx
карандаш, если хотите И пишете AND, если ИЛИ то пишете OR ))
p.s. для примера if (x=0 and x=1) then exit


в интернете опять кто-то не прав

Сообщение отредактировал Матраскин - Понедельник, 18.02.2013, 09:52
 
Ответить
Сообщениекарандаш, если хотите И пишете AND, если ИЛИ то пишете OR ))
p.s. для примера if (x=0 and x=1) then exit

Автор - Матраскин
Дата добавления - 18.02.2013 в 09:46
AlexM Дата: Понедельник, 18.02.2013, 10:48 | Сообщение № 3
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4517
Репутация: 1130 ±
Замечаний: 0% ±

Excel 2003
Код
[vba]
Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Intersect(Target, Range("D9,1:3,N:P,C4:C9,F4:F9,K4:K9")) Is Nothing Then Exit Sub
If [A4] = "$$$" Then Exit Sub
Range("A5").Select
End Sub
[/vba]
См.Файл.
К сообщению приложен файл: 2434046.xls (18.5 Kb)



Номер мобильного модема (без голосовой связи)
9269171249 МегаФон, Московский регион.
 
Ответить
СообщениеКод
[vba]
Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Intersect(Target, Range("D9,1:3,N:P,C4:C9,F4:F9,K4:K9")) Is Nothing Then Exit Sub
If [A4] = "$$$" Then Exit Sub
Range("A5").Select
End Sub
[/vba]
См.Файл.

Автор - AlexM
Дата добавления - 18.02.2013 в 10:48
карандаш Дата: Понедельник, 18.02.2013, 12:09 | Сообщение № 4
Группа: Проверенные
Ранг: Обитатель
Сообщений: 329
Репутация: 8 ±
Замечаний: 0% ±

2010
еззз! yahoo

спасибо))

Цитата (AlexM)
К сообщению приложен файл


))) верю, что работает!!!

 
Ответить
Сообщениееззз! yahoo

спасибо))

Цитата (AlexM)
К сообщению приложен файл


))) верю, что работает!!!


Автор - карандаш
Дата добавления - 18.02.2013 в 12:09
Elvira66 Дата: Среда, 29.03.2017, 19:33 | Сообщение № 5
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 117
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
А если нужно лист другой выбрать, не рабочий, а конкретный, тогда какой код будет?
 
Ответить
СообщениеА если нужно лист другой выбрать, не рабочий, а конкретный, тогда какой код будет?

Автор - Elvira66
Дата добавления - 29.03.2017 в 19:33
Pelena Дата: Среда, 29.03.2017, 19:54 | Сообщение № 6
Группа: Админы
Ранг: Местный житель
Сообщений: 19511
Репутация: 4620 ±
Замечаний: ±

Excel 365 & Mac Excel
Elvira66, тогда надо прочитать Правила форума и создать новую тему. Эта тема закрыта


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеElvira66, тогда надо прочитать Правила форума и создать новую тему. Эта тема закрыта

Автор - Pelena
Дата добавления - 29.03.2017 в 19:54
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2025 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!