Помогите, пожалуйста. Макрос или формулы (формулой было бы интереснее) без разницы. Лишь бы работало. При закрытии файла в ячейке А1 на этом листе (их в рабочем документе куча) всегда выставлялось значение "ВНЕСТИ ИСПОЛНИТЕЛЯ!" При этом, если в ячейке А1 "ВНЕСТИ ИСПОЛНИТЕЛЯ!", то ячейка А3 - защищена от редактирования, при этом вываливалось сообщение "Вы не внесли исполнителя!"
Помогите, пожалуйста. Макрос или формулы (формулой было бы интереснее) без разницы. Лишь бы работало. При закрытии файла в ячейке А1 на этом листе (их в рабочем документе куча) всегда выставлялось значение "ВНЕСТИ ИСПОЛНИТЕЛЯ!" При этом, если в ячейке А1 "ВНЕСТИ ИСПОЛНИТЕЛЯ!", то ячейка А3 - защищена от редактирования, при этом вываливалось сообщение "Вы не внесли исполнителя!"AVI
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.] прошу сильно не пинать, проба пера
в модуль листа [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.] прошу сильно не пинать, проба перакитин
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]
Если всё верно понял. Закрытие книги: [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