Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.02.2014, 06:38   #1
Olper
Пользователь
 
Регистрация: 21.06.2010
Сообщений: 87
По умолчанию Не работает макрос

Уважаемы форумчане!
Подскажите плиз, почему не отрабатывает макрос защиты ячейки по условию. Суть в следующем, при определенном условии - "Да" или "Нет", соответственно защищать или снимать защиту с соседней ячейки.
Макрос:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim lsRow&, iAddress$, r As Range
If Target.Cells.Count > 1 Then Exit Sub
lsRow = Cells(Rows.Count, 5).End(xlUp).Row
If Not Intersect(Target, Range("A2:A" & lsRow)) Is Nothing Then
If Not IsEmpty(Cells(Target.Row, 1)) Then
If Cells(Target.Row, 1) = "Äà" Then
ActiveCell.Offset(0, 1).Range("A1").Select
Selection.Locked = True
Selection.FormulaHidden = False
ActiveSheet.Protect
Else
ActiveCell.Offset(0, 1).Range("A1").Select
ActiveSheet.Unprotect
Selection.Locked = False
Selection.FormulaHidden = False
ActiveSheet.Protect
End If
End If
End If
End Sub
Вложения
Тип файла: rar Protect.rar (13.2 Кб, 5 просмотров)
Olper вне форума Ответить с цитированием
Старый 17.02.2014, 07:35   #2
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

Потому, что Вы код поместили в общий модуль, а надо в модуль листа. И селекты в нем лишние, и не только. Можно так, в модуль книги:
Код:
Private Sub Workbook_Open()
    Sheets("Лист1").Unprotect
    Sheets("Лист1").Protect userinterfaceonly:=True
End Sub
а в модуль листа:
Код:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim lsRow&, iAddress$, r As Range
    If Target.Cells.Count > 1 Then Exit Sub
    lsRow = Cells(Rows.Count, 1).End(xlUp).Row
    If Intersect(Target, Range("A2:A" & lsRow)) Is Nothing Then Exit Sub
    Target(1, 2).FormulaHidden = False
    Target(1, 2).Locked = Target = "Да"
End Sub
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728
kuklp вне форума Ответить с цитированием
Старый 17.02.2014, 08:05   #3
Olper
Пользователь
 
Регистрация: 21.06.2010
Сообщений: 87
По умолчанию

Большое спасибо kuklp!
А что до лишних select'ов, так это у меня просто фрагмент большого куска.
Olper вне форума Ответить с цитированием
Старый 17.02.2014, 08:25   #4
Olper
Пользователь
 
Регистрация: 21.06.2010
Сообщений: 87
По умолчанию

И еще, к сожалению не работает Ваша рекомендация. Идея состоит в том, чтобы защищать только соседнюю ячейку напротив которой стоит "Да".
Olper вне форума Ответить с цитированием
Старый 17.02.2014, 09:00   #5
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

У меня все работает. Выложите файл, с моим кодом, где у Вас не работает, будем выпрямлять руки.
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728
kuklp вне форума Ответить с цитированием
Старый 17.02.2014, 09:39   #6
Olper
Пользователь
 
Регистрация: 21.06.2010
Сообщений: 87
По умолчанию

Всем спасибо!!!! Тема снята, заработало., но я все таки своим воспользовался, убрал все лишнее и сделал, что бы защита в соседней ячейке стояла тока на "Да". Но с модулями листа, да....я просохатил. Еще раз спасибо. Тему закрыл.
Olper вне форума Ответить с цитированием
Старый 17.02.2014, 10:10   #7
Olper
Пользователь
 
Регистрация: 21.06.2010
Сообщений: 87
По умолчанию

Но ради интереса, т.к. Ваш код мне нравиться симпатичней, выкладываю свой файл с Вашим кодом
Вложения
Тип файла: rar Protect.rar (13.9 Кб, 7 просмотров)
Olper вне форума Ответить с цитированием
Старый 17.02.2014, 10:24   #8
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

Все так, только с изменяемых ячеек защиту снять надо бы. Иначе как менять да-нет? И после вставки кода либо перезапустить файл, либо выполнить Workbook_Open.
Вложения
Тип файла: rar Protect.rar (14.8 Кб, 6 просмотров)
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728
kuklp вне форума Ответить с цитированием
Старый 17.02.2014, 10:44   #9
Olper
Пользователь
 
Регистрация: 21.06.2010
Сообщений: 87
По умолчанию

Снимаю шляпу!!!
Olper вне форума Ответить с цитированием
Старый 17.02.2014, 10:57   #10
Olper
Пользователь
 
Регистрация: 21.06.2010
Сообщений: 87
По умолчанию

Тогда извините, еще один вопрос.
Можно ли в ячейке с выпадающим списком, кроме допустим "Да", "Нет", по умолчанию ставить еще и формулу?
Olper вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не работает макрос в XP vefer Microsoft Office Excel 6 22.01.2012 15:28
Не работает макрос по сети ZHDN Microsoft Office Excel 8 11.12.2011 21:16
Макрос не правильно работает staniiislav Microsoft Office Excel 6 12.10.2011 17:02
Почему не работает макрос Dog_DinGo Microsoft Office Excel 8 20.03.2011 23:57
Не работает макрос в сети Mark.ru Microsoft Office Excel 4 02.03.2011 12:12