Страницы: 1 2 След.
RSS
[ Закрыто ] События листов. Из цепочки макросов не срабатывают те, что запускаются прии изменении во втором лист
 
Добрый день уважаемые гуру Екселя.
У меня такая проблемка. На событиях в листах настроены активации нескольких макросов, они так сказать связаны в одну цепочку. Так вот вроде все правильно прописал, но почему то последние два макроса не срабатывают, хотя я точно так же с другими макросами делал и все нормально было.
Посмотрите пожалуйста пример и подскажите, что я не так сделал.. я уже не знаю, что там не так.

последние два макроса не запускаются по событию в листе, в А3 на листе "Мясорубка" вставляются макросом фразы из другого листа, далее после этого должны запустится последовательно два других макроса, но они не срабатывают, только если я сделаю изменения вручную.

Таких листов с десяток в оригинале, мне так нужно. Для примера так и поставил как в оригинале идет.. по событию в одном листе, копирует данные из того листа в другой, в котором срабатывают другие события.

Заранее спасибо за помощь!
Изменено: Gagarin13 - 01.12.2018 16:40:40
 
Какой смысл в запуске событий другого листа? Почему нельзя запустить сами макросы?
 
Цитата
vikttur написал:
Почему нельзя запустить сами макросы?
Т.к эти макросы должны запускаться после того как будет текст в том листе. Тыкать кнопки мне не нужно...
 
По событию в первом листе запускаете CopyFraze_CCM_M9so. Так кто мешает этим же событием  (или вызванным макросом) запустить другие макросы?
Да и запускаются макросы...

Попутно
Код
If Not Intersect(Range("A3:A100000,B2:K100000"), Target) Is Nothing Then
...
If Not Intersect(Range("A2:A100000"), Target) Is Nothing Then CopyFraze_CCM_M9so

и не нужны доп. переменные
 
Цитата
vikttur написал:
По событию в первом листе запускаете CopyFraze_CCM_M9so. Так кто мешает этим же событием  (или вызванным макросом) запустить другие макросы?
Пробовал, результат такой же. Ощущение будто они срабатывают раньше чем вставляется текст или не успевают срабатывать. По этому попробовал разделить на события в листах По вашему примеру пока не очень понял.
Изменено: Gagarin13 - 01.12.2018 16:09:34
 
Пример - это упрощение Вашей писанины в макросах, реагирующих на события листа.
 
Цитата
vikttur написал:
Пример - это упрощение Вашей писанины в макросах, реагирующих на события листа.
Это понятно, но то что стало одной строчкой меньше, не очень то решает проблему, не срабатывания макросов.
 
А можно озвучить саму задачу, а не способ, которым Вы пытаетесь ее решить?
Согласие есть продукт при полном непротивлении сторон
 
Копируе даные в столбец А а первом листе. Запускается макрос CopyFraze_CCM_M9so
Строка
Код
Sheets("Мясорубка").Range("A3:A100000").ClearContents

Запускает макрос события второго листа. Там даных еще нет. Естественно, ничего не разделяется.
Отрабатывает макрос события второго листа, переход к строке в CopyFraze_CCM_M9so
Код
Sheets("Лист1").Range("A2:A100000").SpecialCells(2).Copy Sheets("Мясорубка").Range("A3")

Строка опять запускает макрос события второго листа. Даные вставляются в первый столбец.
Конец работы макросов.
 
Sanja, Ну сама задача описана в описании. По событиям в листе (и даже если уже вызванным макросом вызывать остальные) то остальные два макроса не срабатывают.

Цитата
vikttur написал: Строка опять запускает макрос события второго листа. Даные вставляются в первый столбец.Конец работы макросов.
Да действительно, я на это тоже подумал. НО я поставил в самом конце этого кода вызов двух макросов которые не срабатывали, и картина такая же.. Я поставил вызов в самом конце, получается на срабатывание после того как данные уже будут находится в столбце.. но все равно та же картина.
 
Цитата
Gagarin13 написал:
Sanja , Ну сама задача описана в описании
в описании описано Ваше решение и недоумение почему оно не работает
описания задачи там нет!

сможете описать задачу - скорее всего ее смогут решить или посоветовать как решить.
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Решение Вашего пути и вопроса этой темы - подставить костыли в виде отключения/включения событий при очистке диапазона. При этом второй лист не среагирует на событие изменения данных в первом столбце.
В макрос CopyFraze_CCM_M9so
Код
        Application.EnableEvents = False
        Sheets("Мясорубка").Range("A3:A100000").ClearContents
        Application.EnableEvents = True

События листов
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Range("A2:A100000"), Target) Is Nothing Then CopyFraze_CCM_M9so
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Range("A3:A100000"), Target) Is Nothing Then
        Application.EnableEvents = False
        
        Call Разделение_Текст_по_Столбцам
        Call Копирование_Данных_в_один_Столбец
        
        Application.EnableEvents = True
    End If
End Sub

А я так и не понял, зачем задействовать события второго листа. Но - в путь! С костылями...
 
Говорю же пробовал в одном листе все задействовать, у меня не получилось, наверное что то не так сделал. Поэтому разделил на два листа события. Но безрезультатно. Как правильно в одном листе все записать фиг знает.

Цитата
vikttur написал: В макрос CopyFraze_CCM_M9so
Попробовал ваш пример. Вставил в макрос исправление. В листы закинул ваши события. Ничего не работает, еще и ошибку выбивает первом макросе который не срабатывал и теперь все макросы в файле не работают.

В этой строке ошибка:
Код
Sub Разделение_Текст_по_Столбцам()
' Разделение_Текста_по_Столбцам Макрос
Sheets("Мясорубка").Range("A3:A100000").Select  '<-------туть
Изменено: Gagarin13 - 01.12.2018 18:23:11
 
Цитата
Ігор Гончаренко написал:
сможете описать задачу - скорее всего ее смогут решить или посоветовать как решить
неудобно цитировать себя, но просто продолжу мысль
а не можете (не хотите) - решайте ее самостоятельно
удачи!
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
ну вроде уже вся задача разжовона, господин vikttur вроде понял суть задачи.
 
Цитата
Gagarin13 написал:
господин vikttur вроде понял суть задачи.
:D
Я думаю, не он один.
Вместо того, чтобы решать задачу, как из "рыбы" сделать макрос, вы упорно решаете задачу, какие, и куда, приставить костыли, чтобы "рыба" стала хотя-бы хромать.
 
Если бы вы внимательнее читали все сообщения, заметили бы, что я о подобном вообще не писал. Мне не нужны костыли, у меня так сделано в меру моих познаний. Я ранее написал, что не знаю как это лучше сделать. И здесь ждал, что подскажут как сделать лучше. Я пробовал делать по другому и у меня не получалось.. об этом я писал ранее. Я и пытаюсь получить ответ на решение этой задачи.. Получил один ответ от Виктура, но у меня он не срабатывает. Хотя по идее он должен работать. Я нечто подобно писал. Но у меня выбивает ошибки.
 
Я читал внимательно.
Цитата
Sanja написал:
А можно озвучить саму задачу, а не способ, которым Вы пытаетесь ее решить?
Цитата
Gagarin13 написал:
Sanja , Ну сама задача описана в описании.
 
RAN, Я описал свой метод решения так как я делаю... но я нигде не писал что нужно именно так же все решить что бы хоть как то работало.. мне нужно что бы работало хорошо.. повторюсь, просто описал свой метод решения..
 
Цитата
Gagarin13 написал: повторюсь, просто описал свой метод решения
и я повторюсь
Цитата
Sanja написал: А можно озвучить саму задачу, а не способ, которым Вы пытаетесь ее решить?
Не думаю, что ЗАДАЧА - это запуск абы каких макросов.
ЧТО должны делать Ваши макросы? Что должно получиться на выходе?
Напишите просто, по-русски, без привязки к VBA.
В качестве файла примера приложите файл с двумя листами. На первом Как есть, на втором Как надо. Без макросов вообще
Согласие есть продукт при полном непротивлении сторон
 
Gagarin13, о чем была речь в первых ответах (удалены)? Не Вас ли просили дать теме название по задаче? После этого я два раза! переименовывал, чтобы хоть как-то приблизить к решаемой проблеме.  А проблема - не Ваша задача, а неработоспособность при событиях листов. Вы же упорно на этом настаивали.

По этой теме причина освещена, решение предложено.
То, что не работает что-то еще - так это в криво написанном макросе разделения по столбцам, к этой теме отношения не имеет. Пройдите в пошаговом режиме и увидите.

И замените аватарку, негоже с такими знаниями прикрываться таким человеком.
 
vikttur, Зато младенцем куда лучше.
Уже писал. Что я не против новых решений.. я ни в одном сообщении не написал что нужно упороться и делать моим способом... Написано было. Что я сделал в меру своих познаний, если есть варианты по лучше, то буду рад рассмотреть. Пример вашего решения так же попробовал но он не сработал.
Изменено: Gagarin13 - 01.12.2018 18:21:59
 
Цитата
младенцем куда лучше.
Конечно. Вечно заинтересованный и удивляющийся новому.
 
Слушайте, в отличии от вас, я не цепляюсь за дурацкие мелочи, вроде аватарки, лишь бы оскорбить кого то. Если так хочется, то делайте это более адекватно.
Я конечно извиняюсь. Но вы слишком зациклились и придрались к словам не беря в расчет остальные вводные данные.

1. Я описал как я решил свою задачу, но она не совсем работает.
2. Написал что нужно решить эту задачу, а каким способом я вообще нигде не указывал.
 
Цитата
Gagarin13 написал: Уже писал. Что я не против новых решений.. я ни в одном сообщении не написал что нужно упороться и делать моим способом...
Вы бы хоть в одном сообщении написали, ЧТО нужно сделать. Не КАК, а ЧТО? ЧТОООО, Карл!!!
Цитата
Gagarin13 написал: просто запустите два нерабочих макроса
Вам лень описать задачу, а мы должны разбираться в Ваших НЕрабочих макросах
Согласие есть продукт при полном непротивлении сторон
 
Цитата
Sanja написал:
Вы бы хоть в одном сообщении написали, ЧТО нужно сделать. Не КАК, а ЧТО? ЧТОООО, Карл!!!
ЧТО сделать было несколько раз описано... здесь только вам похоже не понятна суть дела.
Вот вкратце суть всего описания.
Задача была сделать так и так... работает так и так. В конце не работает так и так..
Нужно сделать что бы работало (НЕ обязательно делать как я сделал.. если есть варианты сделать лучше то пожалуйста)

Вот что было написано.. что вам не понятно, я вообще без понятия. Написал, что сделать и как это было сделано.. указания что нужно сделать так же лишь бы работало.. нигде небыло написано.. если вы найдете такое заявление от моего лица, то вы великий магистр.
Изменено: Gagarin13 - 01.12.2018 18:30:57
 
Цитата
Я описал как я решил свою задачу, но она не совсем работает.
На мои предложения переименновть тему по задаче Вы НАСТАИВАЛИ на событиях листов!!!

Цитата
Пример вашего решения так же попробовал но он не сработал
Не работает Ваш макрос разеления, к событиям он отношения не имеет.

Gagarin13, Вы людей слышите?
Название темы должно отражать суть задачи. Эта тема - о событиях листа. Хотите помощи по другой проблеме - создайте тему.

А эту удалим. Мне не жаль своих сообщений, так как там не решение, а костыли, которые в нормальных программах применять не нужно.
 
Цитата
Gagarin13 написал: ЧТО сделать было несколько раз описано... здесь только вам похоже не понятна суть дела.
Ткните меня, тупого, носом в то сообщение, где описана задача. Посыплю голову пеплом
Согласие есть продукт при полном непротивлении сторон
 
Цитата
vikttur написал:
Не работает Ваш макрос разеления, к событиям он отношения не имеет. Gagarin13, Вы людей слышите?Название темы должно отражать суть задачи. Эта тема - о событиях листа. Хотите помощи по другой проблеме - создайте тему.
Я как на тот момент понимал в чем проблема.. так тему и назвал.. иногда ощущение, что вы читаете тему вместо описания.  
 
Блин!!!
Сколько раз я Вас просил предложить название ПО ЗАДАЧЕ?!
Страницы: 1 2 След.
Наверх