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

Вход

Регистрация

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

 

= Мир MS Excel/Запрет редактирования в ячейке при условии. - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Запрет редактирования в ячейке при условии. (Формулы/Formulas)
Запрет редактирования в ячейке при условии.
AVI Дата: Пятница, 26.05.2017, 06:46 | Сообщение № 1
Группа: Проверенные
Ранг: Ветеран
Сообщений: 523
Репутация: 17 ±
Замечаний: 0% ±

Excel 2016
Помогите, пожалуйста. Макрос или формулы (формулой было бы интереснее) без разницы. Лишь бы работало.
При закрытии файла в ячейке А1 на этом листе (их в рабочем документе куча) всегда выставлялось значение "ВНЕСТИ ИСПОЛНИТЕЛЯ!"
При этом, если в ячейке А1 "ВНЕСТИ ИСПОЛНИТЕЛЯ!", то ячейка А3 - защищена от редактирования, при этом вываливалось сообщение "Вы не внесли исполнителя!"
К сообщению приложен файл: 15.xlsx (8.7 Kb)
 
Ответить
СообщениеПомогите, пожалуйста. Макрос или формулы (формулой было бы интереснее) без разницы. Лишь бы работало.
При закрытии файла в ячейке А1 на этом листе (их в рабочем документе куча) всегда выставлялось значение "ВНЕСТИ ИСПОЛНИТЕЛЯ!"
При этом, если в ячейке А1 "ВНЕСТИ ИСПОЛНИТЕЛЯ!", то ячейка А3 - защищена от редактирования, при этом вываливалось сообщение "Вы не внесли исполнителя!"

Автор - AVI
Дата добавления - 26.05.2017 в 06:46
китин Дата: Пятница, 26.05.2017, 08:02 | Сообщение № 2
Группа: Модераторы
Ранг: Экселист
Сообщений: 7015
Репутация: 1073 ±
Замечаний: 0% ±

Excel 2007;2010;2016
в модуль листа
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("A1")) Is Nothing Then Exit Sub
If Range("A1").Value = "ВНЕСТИ ИСПОЛНИТЕЛЯ!" Then
     ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
        , AllowFiltering:=True
        MsgBox "Вы не внесли исполнителя!!!"
        Else
    ActiveSheet.Unprotect
End If
End Sub
[/vba]
в модуль книги
[vba]
Код
Private Sub Workbook_Open()
ThisWorkbook.Sheets("Лист1").Activate
ActiveSheet.Range("A1").Value = "ВНЕСТИ ИСПОЛНИТЕЛЯ!"
End Sub
[/vba]
[p.s.] :D прошу сильно не пинать, проба пера
К сообщению приложен файл: 555111.xlsm (17.0 Kb)


Не судите очень строго:я пытаюсь научиться
ЯД 41001877306852


Сообщение отредактировал китин - Пятница, 26.05.2017, 08:11
 
Ответить
Сообщениев модуль листа
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("A1")) Is Nothing Then Exit Sub
If Range("A1").Value = "ВНЕСТИ ИСПОЛНИТЕЛЯ!" Then
     ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
        , AllowFiltering:=True
        MsgBox "Вы не внесли исполнителя!!!"
        Else
    ActiveSheet.Unprotect
End If
End Sub
[/vba]
в модуль книги
[vba]
Код
Private Sub Workbook_Open()
ThisWorkbook.Sheets("Лист1").Activate
ActiveSheet.Range("A1").Value = "ВНЕСТИ ИСПОЛНИТЕЛЯ!"
End Sub
[/vba]
[p.s.] :D прошу сильно не пинать, проба пера

Автор - китин
Дата добавления - 26.05.2017 в 08:02
AVI Дата: Пятница, 26.05.2017, 08:54 | Сообщение № 3
Группа: Проверенные
Ранг: Ветеран
Сообщений: 523
Репутация: 17 ±
Замечаний: 0% ±

Excel 2016
китин, Все круто, только можно, что бы сообщение о том, что не внесли исполнителя появлялось только тогда, когда кто-то пытается заполнить а3?
 
Ответить
Сообщениекитин, Все круто, только можно, что бы сообщение о том, что не внесли исполнителя появлялось только тогда, когда кто-то пытается заполнить а3?

Автор - AVI
Дата добавления - 26.05.2017 в 08:54
buchlotnik Дата: Пятница, 26.05.2017, 11:55 | Сообщение № 4
Группа: Заблокированные
Ранг: Участник клуба
Сообщений: 3442
Репутация: 929 ±
Замечаний: 20% ±

2010, 2013, 2016 RUS / ENG
Если всё верно понял.
Закрытие книги:
[vba]
Код
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    ThisWorkbook.Sheets("Лист1").Activate
    ActiveSheet.Range("A1").Value = "ВНЕСТИ ИСПОЛНИТЕЛЯ!"
End Sub
[/vba]
Событие листа:
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$A$3" And [a1] = "ВНЕСТИ ИСПОЛНИТЕЛЯ!" Then
        Application.EnableEvents = False
        Application.Undo
        Application.EnableEvents = True
        MsgBox "Вы не внесли исполнителя!!!"
    End If
End Sub
[/vba]
К сообщению приложен файл: 555111_.xlsm (14.1 Kb)
 
Ответить
СообщениеЕсли всё верно понял.
Закрытие книги:
[vba]
Код
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    ThisWorkbook.Sheets("Лист1").Activate
    ActiveSheet.Range("A1").Value = "ВНЕСТИ ИСПОЛНИТЕЛЯ!"
End Sub
[/vba]
Событие листа:
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$A$3" And [a1] = "ВНЕСТИ ИСПОЛНИТЕЛЯ!" Then
        Application.EnableEvents = False
        Application.Undo
        Application.EnableEvents = True
        MsgBox "Вы не внесли исполнителя!!!"
    End If
End Sub
[/vba]

Автор - buchlotnik
Дата добавления - 26.05.2017 в 11:55
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Запрет редактирования в ячейке при условии. (Формулы/Formulas)
  • Страница 1 из 1
  • 1
Поиск:

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