Здравствуйте. Есть такой код который я нашел где-то и пользовался им.
Код
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$1" Then ' реакция на изменение в ячейке с координатами A1 _
если нужна другая ячейка, поменяйте координату, _
т.е. вместо "$A$1" впишите любую другую (знак "$" _
обязателен!
'запускаем наш макрос
myMacro
End If
End Sub
Но он прописывается в листе, и это не удобно так как в книге 20+листов. Как поправить его, чтобы прописать не в листе а в книге, так как листов много и задать в макросе не 1 ячейку, а несколько. например D5,D6, D7, D8,D9, D10 .? Сам пробовал ,но нечего не выходит.(((( Пробовал так,это позволило добавить ячейки, но опять же это прописано в коде листа а не книги.
Скрытый текст
Private Sub Worksheet_Change(ByVal Target As Range) If Left(Target.Address, 4) = "$D$5" Then myMacro If Left(Target.Address, 4) = "$D$6" Then myMacro If Left(Target.Address, 4) = "$D$7" Then myMacro End Sub
Изменение ячейки- это событие листа, на уровне книги совершенно другие события. Так что скорее всего придется на каждом листе прописать код. (Если конечно, более опытные форумчане не подскажут другое решение)
А событие на изменение ячеек в диапазоне можете записать так:
Код
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A1:G100")) Is Nothing Then '
'запускаем наш макрос
myMacro
End If
End Sub
Нужно бежать со всех ног, чтобы только оставаться на месте, а чтобы куда-то попасть, надо бежать как минимум вдвое быстрее!
Из модуля листа макрос удалить. В модуль ЭтаКнига вставить
Код
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If Target.Address = "$A$1" Then ' реакция на изменение в ячейке с координатами A1 _
если нужна другая ячейка, поменяйте координату, _
т.е. вместо "$A$1" впишите любую другую (знак "$" _
обязателен!
'запускаем наш макрос
myMacro
End If
End Sub
Согласие есть продукт при полном непротивлении сторон
Dyroff, Хорошо. Когда ввожу что-либо в диапазон-выводится сообщение заданyое во 2 макросе: msgbox "test"
А при попытке очистить любую ячейку из диапазона клавишей Del -снова выодится сообщение. но после нажания ОК в сообщении, оно непропадает а появляется снова. Макрос второй выполняется повторно и так до безконечности
vas_75353 написал: чтобы прописать не в листе а в книге.... например D5,D6, D7, D8,D9, D10....
В модуль ЭтаКнига
Код
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If Not Intersect(Target, Range("D6:D10")) Is Nothing And Target.Count = 1 Then
myMacro
End If
End Sub
Согласие есть продукт при полном непротивлении сторон
разобрался неспеша сам методами тыков: Это прописал в книге:
Код
Private Sub Workbook_sheetChange(ByVal Sh As Object, ByVal Target As Range)
If Not Intersect(Target, Range("B10:B20")) Is Nothing Then '
'
test_macros
End If
End Sub
test_macros -это макрос который апустится в любом модуле. Спасибо за помощь! :-)
Dyroff написал: Изменение ячейки- это событие листа, на уровне книги совершенно другие события. Так что скорее всего придется на каждом листе прописать код.
Dyroff, не нужно на каждом листе - загляните в модуль Эта книга.