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

Вход

Регистрация

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

 

= Мир MS Excel/Изменение формата ячейки по событию - Мир MS Excel

Старая форма входа
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: китин, _Boroda_  
Изменение формата ячейки по событию
Мур Дата: Суббота, 01.12.2012, 11:55 | Сообщение № 1
Группа: Проверенные
Ранг: Обитатель
Сообщений: 436
Репутация: 19 ±
Замечаний: 0% ±

Приветствую участников форума!
Пытаюсь доказать коллегам преимущество Excel над, не улыбайтесь, бумажными журналами.
Составляю за них таблицы, произвожу хронометраж отдельных видов работ для сравнения, и т.д.
Тщетно, народу много, обязательно кто-нибудь, своими кривыми действиями все испортит. Проверка
данных и скрытые диапазоны уже не помогают. Все же надеюсь на возможности Excel и вашу помощь.
Необходимо чтобы при занесении значения в определенную ячейку, данная ячейки и соседние, ограниченные диапазоном, приобретали свойство "защищаемая ячейка". Описание проблемы продублированно в прилагаемом примере. Вероятнее всего решение макросом, но я не очень
удивлюсь если кто-нибудь найдет решение формулами. От Excel можно ожидать чего угодно.
Заранее благодарен.
К сообщению приложен файл: 7900924.xls (21.0 Kb)
 
Ответить
СообщениеПриветствую участников форума!
Пытаюсь доказать коллегам преимущество Excel над, не улыбайтесь, бумажными журналами.
Составляю за них таблицы, произвожу хронометраж отдельных видов работ для сравнения, и т.д.
Тщетно, народу много, обязательно кто-нибудь, своими кривыми действиями все испортит. Проверка
данных и скрытые диапазоны уже не помогают. Все же надеюсь на возможности Excel и вашу помощь.
Необходимо чтобы при занесении значения в определенную ячейку, данная ячейки и соседние, ограниченные диапазоном, приобретали свойство "защищаемая ячейка". Описание проблемы продублированно в прилагаемом примере. Вероятнее всего решение макросом, но я не очень
удивлюсь если кто-нибудь найдет решение формулами. От Excel можно ожидать чего угодно.
Заранее благодарен.

Автор - Мур
Дата добавления - 01.12.2012 в 11:55
ABC Дата: Суббота, 01.12.2012, 12:10 | Сообщение № 2
Группа: Друзья
Ранг: Обитатель
Сообщений: 397
Репутация: 112 ±
Замечаний: 0% ±

Excel 2007
примерно так:
в модуль листа
[vba]
Code
Private Sub Worksheet_Change(ByVal Target As Range)
     If Target.Column <> 4 Then Exit Sub
     If Target.Cells = "x" Then
         Range("B" & Target.Row & ":Q" & Target.Row).Locked = True
     Else: Range("B" & Target.Row & ":Q" & Target.Row).Locked = False
     End If
End Sub
[/vba]


MS Excel 2007 and 2010...
-------------------------------
С Уважением, Даулет
 
Ответить
Сообщениепримерно так:
в модуль листа
[vba]
Code
Private Sub Worksheet_Change(ByVal Target As Range)
     If Target.Column <> 4 Then Exit Sub
     If Target.Cells = "x" Then
         Range("B" & Target.Row & ":Q" & Target.Row).Locked = True
     Else: Range("B" & Target.Row & ":Q" & Target.Row).Locked = False
     End If
End Sub
[/vba]

Автор - ABC
Дата добавления - 01.12.2012 в 12:10
Мур Дата: Суббота, 01.12.2012, 12:57 | Сообщение № 3
Группа: Проверенные
Ранг: Обитатель
Сообщений: 436
Репутация: 19 ±
Замечаний: 0% ±

Даулет, спасибо, еще не проверял, отпишусь позже надо отлучиться.
 
Ответить
СообщениеДаулет, спасибо, еще не проверял, отпишусь позже надо отлучиться.

Автор - Мур
Дата добавления - 01.12.2012 в 12:57
Alex_ST Дата: Суббота, 01.12.2012, 22:40 | Сообщение № 4
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3213
Репутация: 609 ±
Замечаний: 0% ±

2003
Хоть Даулет уже и написал практически то же самое, но вот так будет намного короче, да и что-нибудь ещё можно будет по событию Worksheet_Change обработать:
[vba]
Code
Private Sub Worksheet_Change(ByVal Target As Range)
      If Target.Column = 4 Then Range("B" & Target.Row & ":Q" & Target.Row).Locked = UCase(Target.Value) = "X"
End Sub
[/vba]

К стати, Мурат, Х как букву-метку Вы выбрали совсем не удачно - она одинаково выглядит что в русской, что в латинской раскладке и фиг поймёшь, что надо вводить на лист чтобы ячейки залочились.



С уважением,
Алексей
MS Excel 2003 - the best!!!


Сообщение отредактировал Alex_ST - Суббота, 01.12.2012, 22:40
 
Ответить
СообщениеХоть Даулет уже и написал практически то же самое, но вот так будет намного короче, да и что-нибудь ещё можно будет по событию Worksheet_Change обработать:
[vba]
Code
Private Sub Worksheet_Change(ByVal Target As Range)
      If Target.Column = 4 Then Range("B" & Target.Row & ":Q" & Target.Row).Locked = UCase(Target.Value) = "X"
End Sub
[/vba]

К стати, Мурат, Х как букву-метку Вы выбрали совсем не удачно - она одинаково выглядит что в русской, что в латинской раскладке и фиг поймёшь, что надо вводить на лист чтобы ячейки залочились.

Автор - Alex_ST
Дата добавления - 01.12.2012 в 22:40
ikki Дата: Воскресенье, 02.12.2012, 01:11 | Сообщение № 5
Группа: Друзья
Ранг: Старожил
Сообщений: 1906
Репутация: 504 ±
Замечаний: 0% ±

Excel 2003, 2010
Quote (Alex_ST)
и фиг поймёшь, что надо вводить на лист чтобы ячейки залочились.

всё подряд biggrin
а в коде написать не
[vba]
Code
... UCase(Target.Value) = "X"
[/vba]
а
[vba]
Code
... UCase(Target.Value) like "[XХ]"
[/vba]
причем там одна буква Х - русская, а вторая - X - латинская


помощь по Excel и VBA
ikki@fxmail.ru, icq 592842413, skype alex.ikki
 
Ответить
Сообщение
Quote (Alex_ST)
и фиг поймёшь, что надо вводить на лист чтобы ячейки залочились.

всё подряд biggrin
а в коде написать не
[vba]
Code
... UCase(Target.Value) = "X"
[/vba]
а
[vba]
Code
... UCase(Target.Value) like "[XХ]"
[/vba]
причем там одна буква Х - русская, а вторая - X - латинская

Автор - ikki
Дата добавления - 02.12.2012 в 01:11
Alex_ST Дата: Воскресенье, 02.12.2012, 18:36 | Сообщение № 6
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3213
Репутация: 609 ±
Замечаний: 0% ±

2003
Quote (ikki)
UCase(Target.Value) like "[XХ]"
причем там одна буква Х - русская, а вторая - X - латинская
ну, Вы, батенька, и садист! biggrin
Ну, тогда ещё один маленький штрих к этой бяке для начинающих - на смеси одинаковых рус-лат пароль на VBA-проект поставить.



С уважением,
Алексей
MS Excel 2003 - the best!!!
 
Ответить
Сообщение
Quote (ikki)
UCase(Target.Value) like "[XХ]"
причем там одна буква Х - русская, а вторая - X - латинская
ну, Вы, батенька, и садист! biggrin
Ну, тогда ещё один маленький штрих к этой бяке для начинающих - на смеси одинаковых рус-лат пароль на VBA-проект поставить.

Автор - Alex_ST
Дата добавления - 02.12.2012 в 18:36
RAN Дата: Воскресенье, 02.12.2012, 19:03 | Сообщение № 7
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Quote (Alex_ST)
ну, Вы, батенька, и садист!

Не садист, а черный копатель! biggrin


Быть или не быть, вот в чем загвоздка!
 
Ответить
Сообщение
Quote (Alex_ST)
ну, Вы, батенька, и садист!

Не садист, а черный копатель! biggrin

Автор - RAN
Дата добавления - 02.12.2012 в 19:03
ikki Дата: Воскресенье, 02.12.2012, 19:11 | Сообщение № 8
Группа: Друзья
Ранг: Старожил
Сообщений: 1906
Репутация: 504 ±
Замечаний: 0% ±

Excel 2003, 2010
Quote (Alex_ST)
на смеси одинаковых рус-лат пароль на VBA-проект поставить

ага, спасибо.
хорошая идея.


помощь по Excel и VBA
ikki@fxmail.ru, icq 592842413, skype alex.ikki
 
Ответить
Сообщение
Quote (Alex_ST)
на смеси одинаковых рус-лат пароль на VBA-проект поставить

ага, спасибо.
хорошая идея.

Автор - ikki
Дата добавления - 02.12.2012 в 19:11
Alex_ST Дата: Воскресенье, 02.12.2012, 19:15 | Сообщение № 9
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3213
Репутация: 609 ±
Замечаний: 0% ±

2003
Вот так, блин, в шутку посоветуешь что-нибудь, а потом …
Quote (Ф.И.Тютчев, 1869г.)
"Нам не дано предугадать,
Как слово наше отзовется"
biggrin biggrin biggrin



С уважением,
Алексей
MS Excel 2003 - the best!!!


Сообщение отредактировал Alex_ST - Воскресенье, 02.12.2012, 19:17
 
Ответить
СообщениеВот так, блин, в шутку посоветуешь что-нибудь, а потом …
Quote (Ф.И.Тютчев, 1869г.)
"Нам не дано предугадать,
Как слово наше отзовется"
biggrin biggrin biggrin

Автор - Alex_ST
Дата добавления - 02.12.2012 в 19:15
ikki Дата: Воскресенье, 02.12.2012, 19:26 | Сообщение № 10
Группа: Друзья
Ранг: Старожил
Сообщений: 1906
Репутация: 504 ±
Замечаний: 0% ±

Excel 2003, 2010
я тоже шучу.
я давно использую подобные пароли из смеси кириллицы и латиницы.
там, где это можно.


помощь по Excel и VBA
ikki@fxmail.ru, icq 592842413, skype alex.ikki
 
Ответить
Сообщениея тоже шучу.
я давно использую подобные пароли из смеси кириллицы и латиницы.
там, где это можно.

Автор - ikki
Дата добавления - 02.12.2012 в 19:26
Alex_ST Дата: Воскресенье, 02.12.2012, 19:53 | Сообщение № 11
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3213
Репутация: 609 ±
Замечаний: 0% ±

2003
Значит, я угадал:
Quote (Alex_ST)
Вы, батенька, и садист!
killed
Ладно, заканчиваем воскресный оффтопный флуд



С уважением,
Алексей
MS Excel 2003 - the best!!!
 
Ответить
СообщениеЗначит, я угадал:
Quote (Alex_ST)
Вы, батенька, и садист!
killed
Ладно, заканчиваем воскресный оффтопный флуд

Автор - Alex_ST
Дата добавления - 02.12.2012 в 19:53
Мур Дата: Понедельник, 03.12.2012, 16:15 | Сообщение № 12
Группа: Проверенные
Ранг: Обитатель
Сообщений: 436
Репутация: 19 ±
Замечаний: 0% ±

Приветствую Даулет, Алексей и ikki, а так же остальных участников форума.
Спасибо за помощь, оба кода, предложенных Даулетом и Алексеем работают исправно.
Вопрос к Даулету, что значит [vba]
Code
Else: Range("B" & Target.Row & ":Q" & Target.Row).Locked = False
[/vba]
У меня работает и без этой строчки. Прокоментируйте, если не сложно.
И еще, вопрос ко всем: прежде чем выполнить макрос мне надо снять защиту [vba]
Code
ActiveSheet.Unprotect
[/vba], а по завершении изменении свойства диапазона снова защитить лист [vba]
Code
ActiveSheet.Protect
[/vba], как прописать пароль, не могу разобраться.
 
Ответить
СообщениеПриветствую Даулет, Алексей и ikki, а так же остальных участников форума.
Спасибо за помощь, оба кода, предложенных Даулетом и Алексеем работают исправно.
Вопрос к Даулету, что значит [vba]
Code
Else: Range("B" & Target.Row & ":Q" & Target.Row).Locked = False
[/vba]
У меня работает и без этой строчки. Прокоментируйте, если не сложно.
И еще, вопрос ко всем: прежде чем выполнить макрос мне надо снять защиту [vba]
Code
ActiveSheet.Unprotect
[/vba], а по завершении изменении свойства диапазона снова защитить лист [vba]
Code
ActiveSheet.Protect
[/vba], как прописать пароль, не могу разобраться.

Автор - Мур
Дата добавления - 03.12.2012 в 16:15
Alex_ST Дата: Понедельник, 03.12.2012, 16:42 | Сообщение № 13
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3213
Репутация: 609 ±
Замечаний: 0% ±

2003
Мурат,
1. Даулет таким образом отключал защиту ячеек когда введено не Х. У меня это тоже сделано, просто одной операцией.
2. А у Вас что, макрорекордер сломался? Ну, нужно же и самому пробовать, а потом уже спрашивать.



С уважением,
Алексей
MS Excel 2003 - the best!!!


Сообщение отредактировал Alex_ST - Понедельник, 03.12.2012, 16:46
 
Ответить
СообщениеМурат,
1. Даулет таким образом отключал защиту ячеек когда введено не Х. У меня это тоже сделано, просто одной операцией.
2. А у Вас что, макрорекордер сломался? Ну, нужно же и самому пробовать, а потом уже спрашивать.

Автор - Alex_ST
Дата добавления - 03.12.2012 в 16:42
Serge_007 Дата: Понедельник, 03.12.2012, 16:43 | Сообщение № 14
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
Quote (Мур)
как прописать пароль

[vba]
Code
ActiveSheet.Protect 123
[/vba]
123 - это пароль

Quote (Мур)
что значит
[vba]
Code
Else: Range("B" & Target.Row & ":Q" & Target.Row).Locked = False
[/vba]

Это значит что незаблокированным оказывается диапазон B:Q по строку в которую внесли изменения


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщение
Quote (Мур)
как прописать пароль

[vba]
Code
ActiveSheet.Protect 123
[/vba]
123 - это пароль

Quote (Мур)
что значит
[vba]
Code
Else: Range("B" & Target.Row & ":Q" & Target.Row).Locked = False
[/vba]

Это значит что незаблокированным оказывается диапазон B:Q по строку в которую внесли изменения

Автор - Serge_007
Дата добавления - 03.12.2012 в 16:43
Alex_ST Дата: Понедельник, 03.12.2012, 16:44 | Сообщение № 15
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3213
Репутация: 609 ±
Замечаний: 0% ±

2003
Серж, зачем так быстро подсказываешь? Дай человеку самому поучиться.



С уважением,
Алексей
MS Excel 2003 - the best!!!


Сообщение отредактировал Alex_ST - Понедельник, 03.12.2012, 16:49
 
Ответить
СообщениеСерж, зачем так быстро подсказываешь? Дай человеку самому поучиться.

Автор - Alex_ST
Дата добавления - 03.12.2012 в 16:44
Мур Дата: Понедельник, 03.12.2012, 16:45 | Сообщение № 16
Группа: Проверенные
Ранг: Обитатель
Сообщений: 436
Репутация: 19 ±
Замечаний: 0% ±

Serge_007, спасибо.
Значит если у меня по умолчанию все ячеки имеют свойство "незащищаемая ячейка", эта строка не нужна?
 
Ответить
СообщениеSerge_007, спасибо.
Значит если у меня по умолчанию все ячеки имеют свойство "незащищаемая ячейка", эта строка не нужна?

Автор - Мур
Дата добавления - 03.12.2012 в 16:45
Alex_ST Дата: Понедельник, 03.12.2012, 16:48 | Сообщение № 17
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3213
Репутация: 609 ±
Замечаний: 0% ±

2003
А разве не надо снимать защиту, когда после ввода Х в ячейку ввели что-то другое или просто Х удалили?



С уважением,
Алексей
MS Excel 2003 - the best!!!


Сообщение отредактировал Alex_ST - Понедельник, 03.12.2012, 16:49
 
Ответить
СообщениеА разве не надо снимать защиту, когда после ввода Х в ячейку ввели что-то другое или просто Х удалили?

Автор - Alex_ST
Дата добавления - 03.12.2012 в 16:48
Мур Дата: Понедельник, 03.12.2012, 16:55 | Сообщение № 18
Группа: Проверенные
Ранг: Обитатель
Сообщений: 436
Репутация: 19 ±
Замечаний: 0% ±

Alex_ST,
Я как раз и пробовал макрорекордером, но он почему-то не отображает введенный пароль, в этом сложность была.
Сейчас прописал вручную - работает.
 
Ответить
СообщениеAlex_ST,
Я как раз и пробовал макрорекордером, но он почему-то не отображает введенный пароль, в этом сложность была.
Сейчас прописал вручную - работает.

Автор - Мур
Дата добавления - 03.12.2012 в 16:55
RAN Дата: Понедельник, 03.12.2012, 16:59 | Сообщение № 19
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Quote (Alex_ST)
ввода Х в ячейку ввели что-то другое или просто Х удалили?

И как это будет выглядеть в защищенной ячейке?


Быть или не быть, вот в чем загвоздка!
 
Ответить
Сообщение
Quote (Alex_ST)
ввода Х в ячейку ввели что-то другое или просто Х удалили?

И как это будет выглядеть в защищенной ячейке?

Автор - RAN
Дата добавления - 03.12.2012 в 16:59
Мур Дата: Понедельник, 03.12.2012, 17:00 | Сообщение № 20
Группа: Проверенные
Ранг: Обитатель
Сообщений: 436
Репутация: 19 ±
Замечаний: 0% ±

Alex_ST, опаздываю с ответами.
Нет, не надо.
Должно работать так:
Изначально файл защищен на пароль, все ячейки "незащищаемые", т.е. доступны для редактирования. После
ввода данных в определенную ячейку, заданный диапазон, в данном случае кусок строки, приобретает значение "защищаемая ячейка".
Это, чтобы пользователи не мошенничали. Редактирование и удаление произвожу я сам, после того как снимаю с пароля.


Сообщение отредактировал Мур - Понедельник, 03.12.2012, 17:09
 
Ответить
СообщениеAlex_ST, опаздываю с ответами.
Нет, не надо.
Должно работать так:
Изначально файл защищен на пароль, все ячейки "незащищаемые", т.е. доступны для редактирования. После
ввода данных в определенную ячейку, заданный диапазон, в данном случае кусок строки, приобретает значение "защищаемая ячейка".
Это, чтобы пользователи не мошенничали. Редактирование и удаление произвожу я сам, после того как снимаю с пароля.

Автор - Мур
Дата добавления - 03.12.2012 в 17:00
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

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