Страницы: 1
RSS
Выполнение при вводе чего либо в ячейку
 
Здравствуйте. Есть такой код который я нашел где-то и пользовался им.
Код
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 .?
Сам пробовал ,но нечего не выходит.((((
Пробовал так,это позволило добавить ячейки, но опять же это прописано в коде листа а не книги.
Скрытый текст
Изменено: vas_75353 - 24.07.2019 17:30:03
 
Изменение ячейки- это событие листа, на уровне книги совершенно другие события. Так что скорее всего придется на каждом листе прописать код. (Если конечно, более опытные форумчане не подскажут другое решение)

А событие на изменение ячеек в диапазоне можете записать так:

Код
Private Sub Worksheet_Change(ByVal Target As Range)
   If Not Intersect(Target, Range("A1:G100")) Is Nothing Then ' 
        'запускаем наш макрос
        myMacro
    End If
End Sub
Нужно бежать со всех ног, чтобы только оставаться на месте, а чтобы куда-то попасть, надо бежать как минимум вдвое быстрее!
 
Я так немогу стереть с чейки-макрос выводит сообщение которое я задал о о шибке и так погругу. приходтся убивать процесс диспетчером
 
vas_75353, Вам не обязательно цитировать все мое сообщение. Достаточно нажать кнопку "Имя" - я пойму, что вы обращаетесь ко мне.

Объясните ваши слова, я ничего не понял, что значит стереть с чейки-макрос? какое вы там сообщение задали? что у вас идет по кругу?
Нужно бежать со всех ног, чтобы только оставаться на месте, а чтобы куда-то попасть, надо бежать как минимум вдвое быстрее!
 
Из модуля листа макрос удалить.
В модуль ЭтаКнига вставить
Код
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
Согласие есть продукт при полном непротивлении сторон
 
Цитата
vas_75353 написал:
Я так немогу стереть с чейки
Откройте книгу не включая макросы и стирайте
 
Sanja,  :oops:
Нужно бежать со всех ног, чтобы только оставаться на месте, а чтобы куда-то попасть, надо бежать как минимум вдвое быстрее!
 
Dyroff,
Хорошо. Когда ввожу что-либо в диапазон-выводится сообщение заданyое во 2 макросе:  msgbox "test"

А при попытке очистить любую ячейку из диапазона клавишей Del  -снова выодится сообщение. но после нажания ОК в сообщении, оно непропадает а появляется снова.  Макрос второй выполняется повторно и так до безконечности
 
vas_75353,  прикрепите свой файл.
Нужно бежать со всех ног, чтобы только оставаться на месте, а чтобы куда-то попасть, надо бежать как минимум вдвое быстрее!
 
Цитата
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 -это макрос который апустится в любом модуле.
Спасибо за помощь! :-)
Изменено: vas_75353 - 24.07.2019 22:59:22
 
Цитата
Dyroff написал:
Изменение ячейки- это событие листа, на уровне книги совершенно другие события. Так что скорее всего придется на каждом листе прописать код.
Dyroff, не нужно на каждом листе - загляните в модуль Эта книга.
 
Юрий М, да я уж понял) после сообщения
Цитата
Sanja написал:
В модуль ЭтаКнига вставить
Нужно бежать со всех ног, чтобы только оставаться на месте, а чтобы куда-то попасть, надо бежать как минимум вдвое быстрее!
Страницы: 1
Наверх