Здравствуйте. Пользуюсь макросом (спасибо Алексею Матевосову) который записан в "эта книга". Работа макроса нужна на большинстве листах, но не на всех. Макрос изменяет содержимое ячеек на листах, где его работа не нужна. Пробовал убирать макрос из книги и помещать в соответствующие листы, но он тогда вообще переставал работать. Как сделать, чтобы макрос работал только на нужных листах? Спасибо.
Макрос такой: [vba]
Код
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
'водим дату открытия и закрытия сессии If Not Intersect(Range("J5:U" & Range("C4").End(xlDown).Row), Target) Is Nothing Then Range("F" & Target.Row) = IIf(Range("E" & Target.Row) = "Д", Date, "") End If
If Not Intersect(Range("G5:I" & Range("C4").End(xlDown).Row), Target) Is Nothing Then Range("W" & Target.Row) = IIf(Range("V" & Target.Row) = "Сд", Date, "") End If
'создаем примечание с датой сдачи экзамена If Intersect(Target, Range("AG:AG")) Is Nothing Then Exit Sub
Dim oComment As Comment On Error Resume Next Set oComment = Target.Comment If oComment Is Nothing Then Target.AddComment Target.Text & " " & Range("AI" & Target.Row)
Else oComment.Text oComment.Text & Chr(10) & Target.Text & " " & Range("AI" & Target.Row) End If End Sub
[/vba]
Здравствуйте. Пользуюсь макросом (спасибо Алексею Матевосову) который записан в "эта книга". Работа макроса нужна на большинстве листах, но не на всех. Макрос изменяет содержимое ячеек на листах, где его работа не нужна. Пробовал убирать макрос из книги и помещать в соответствующие листы, но он тогда вообще переставал работать. Как сделать, чтобы макрос работал только на нужных листах? Спасибо.
Макрос такой: [vba]
Код
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
'водим дату открытия и закрытия сессии If Not Intersect(Range("J5:U" & Range("C4").End(xlDown).Row), Target) Is Nothing Then Range("F" & Target.Row) = IIf(Range("E" & Target.Row) = "Д", Date, "") End If
If Not Intersect(Range("G5:I" & Range("C4").End(xlDown).Row), Target) Is Nothing Then Range("W" & Target.Row) = IIf(Range("V" & Target.Row) = "Сд", Date, "") End If
'создаем примечание с датой сдачи экзамена If Intersect(Target, Range("AG:AG")) Is Nothing Then Exit Sub
Dim oComment As Comment On Error Resume Next Set oComment = Target.Comment If oComment Is Nothing Then Target.AddComment Target.Text & " " & Range("AI" & Target.Row)
Else oComment.Text oComment.Text & Chr(10) & Target.Text & " " & Range("AI" & Target.Row) End If End Sub
Просто в начале макроса надо проверять ещё и (не)соответствие нужному вам листу. Т.е. либо где-то прописать список тех листов, на которые макрос (не)должен реагировать (в виде списка на листе, именованного диапазона или формулы, прямо здесь в макросе, наконец), либо по каким-то признакам уметь определять "нужные" листы (на основе имеюшейся на них структуры информации, например). В любом случае, надо на ваш файл смотреть...
Просто в начале макроса надо проверять ещё и (не)соответствие нужному вам листу. Т.е. либо где-то прописать список тех листов, на которые макрос (не)должен реагировать (в виде списка на листе, именованного диапазона или формулы, прямо здесь в макросе, наконец), либо по каким-то признакам уметь определять "нужные" листы (на основе имеюшейся на них структуры информации, например). В любом случае, надо на ваш файл смотреть...AndreTM