Название: Автоматическое выполнение макроса Excel при изменении ячейки Отправлено: Novadies от 11.08.2021, 15:20:33 При попытке использования этих форм столкнулся со странностью, действия после Then выполняются не тогда когда я изменяю значение ячейки (число меняется вручную), то есть по щелчку энтер, а когда я по этой ячейке щелкаю мышкой (даже если значение не изменялось)... Я что-то не так делаю?
Код: (vb) Private Sub Worksheet_Change(ByVal Target As Range) или Код: (vb) Private Sub Worksheet_Change(ByVal Target As Range) Название: Re:Автоматическое выполнение макроса Excel при изменении ячейки Отправлено: Дмитрий Щербаков(The_Prist) от 11.08.2021, 16:03:54 Я что-то не так делаю? Однозначно. И первая проблема в том, что выкладываете коды, которые, как Вам кажется, являются причиной проблем, а не файл, в котором проблема проявляется.Приведенные коды не срабатывают на выделение, а значит есть еще коды в книге(возможно, Вы о них даже не подозреваете). Название: Re:Автоматическое выполнение макроса Excel при изменении ячейки Отправлено: Novadies от 11.08.2021, 17:00:01 Приведенные коды не срабатывают на выделение, а значит есть еще коды в книге(возможно, Вы о них даже не подозреваете). Итак я выяснил, что проблема не в содержимом после Then. Значит в чём то другом... Файл выкладывать не могу по многим причинам. Думал что дело в UserForm1, но он пустой Название: Re:Автоматическое выполнение макроса Excel при изменении ячейки Отправлено: Непонимающий от 12.08.2021, 13:50:44 Файл выкладывать не могу по многим причинам. 1) Если в файле есть конфиденциальная информация, можете её заменить, например, на яблоки и груши.2) Выложите хотя бы все коды, содержащиеся в файле (коды Вашей Юзерформы и другие). Название: Re:Автоматическое выполнение макроса Excel при изменении ячейки Отправлено: Novadies от 12.08.2021, 16:23:47 Вот файл, слегка урезанный, но сохранивший все макросы.
Название: Re:Автоматическое выполнение макроса Excel при изменении ячейки Отправлено: Дмитрий Щербаков(The_Prist) от 13.08.2021, 12:29:57 В листе ВИК есть событие Worksheet_SelectionChange. Там много кода.
В UserForm кодов вообще нет, поэтому сложно сказать, что может вызывать события. Но тот факт, что событие есть наводит на мысль, что это событие все же может вызываться действиями других макросов в книге. Название: Re:Автоматическое выполнение макроса Excel при изменении ячейки Отправлено: Novadies от 13.08.2021, 14:05:02 Ну так понятно, что там много кода, поэтому я и не видел смысла выкладывать файл. Но весь код направлен на работу с ячейками и вставкой\удалением изображений, поэтому не знаю что там могло вызвать такое странное поведение.
Ещё увидел, что обновление запускается не только по щелчку мышки, но и когда перемещаешь стрелочками текущую выбранную ячейку попадая на ячейку и изменяемыми данными, таким образом непосредственно щелчок мыши ни при чём. Все другие макросы находятся в модулях и доступны к просмотру.... Название: Re:Автоматическое выполнение макроса Excel при изменении ячейки Отправлено: Дмитрий Щербаков(The_Prist) от 13.08.2021, 14:34:35 Ну так понятно, что там много кода А при чем здесь это? Я вообще на это отвечал:действия после Then выполняются не тогда когда я изменяю значение ячейки (число меняется вручную), а когда я по этой ячейке щелкаю мышкой Потому что SelectoinChange как раз на "щелкаю по ячейке мышкой" и срабатывает. И эта обработка у Вас есть. И после ввода данных посредством Enter тоже срабатывает SelectoinChange. Вот изменили Вы значение в ячейке А1 и нажали Enter. Что произошло? Два события: 1. Изменение в ячейке А1 было окончательно изменено. 2. Выделилась ячейка А2, т.к. это стандартное поведение при нажатии Enter в ячейке - переход на следующую ячейку. обновление запускается не только по щелчку мышки, но и когда перемещаешь стрелочками текущую выбранную ячейку попадая на ячейку и изменяемыми данными так все верно. Переместили ячейку - выделение тоже сместилось. Почти каждое действия на листе Excel приводит к изменению выделенной области. А вообще, чтобы другие попытались помочь целенаправленно, надо описать свои действия, которые приводят к нежелательным последствиям. Потому что пока я не понимаю, что именно Вы делаете такого, что после этого происходит не то, что должно. Все другие макросы находятся в модулях и доступны к просмотру я этого не отрицал. Но что они дают без пояснений того, в какой момент Вас что-то не устраивает? Не вижу смысла проделывать 100500 действий ради выявления того единственного, которое проделываете Вы :) Ведь проще подождать, когда Вы сами напишите что именно Вы делаете, какой получаете результат и какой ожидаете.Название: Re:Автоматическое выполнение макроса Excel при изменении ячейки Отправлено: Novadies от 13.08.2021, 15:18:33 Код после Then взят из макросов! И какая разница много кода там или мало, если я уже написал, что дело не в нём! Почему? Потому что можно код заменить на хеллоу ворд и процедура действовать будет так же.
"И после ввода данных посредством Enter тоже срабатывает SelectoinChange" как-то очень странно срабатывает данная функция, если выражаться литературным языком, ведь в одном случае я просто выделяю ячейку, ничего не изменяя, а в другом изменяю содержимое, но результат должен быть одинаковый, ерунда какая-то. " 1. Изменение в ячейке А1 было окончательно изменено. 2. Выделилась ячейка А2, т.к. это стандартное поведение при нажатии Enter в ячейке - переход на следующую ячейку. " Что ж в таком случае мою проблему(?) можно решить переместив в коде изменяемую область с ячейки АХ1 на АХ2, тогда при редактировании АХ1 выделение автоматом слетит на АХ2 и произойдёт срабатывания скрипта. По-моему это дебильный костыль, но он работает, ничего лучше, наверное, не сделать. Спасибо за идею. Думаю вопрос можно закрыть. Название: Re:Автоматическое выполнение макроса Excel при изменении ячейки Отправлено: Дмитрий Щербаков(The_Prist) от 13.08.2021, 15:40:33 мою проблему(?) можно решить Вы почему-то из всего текста выдернули только то, что никак в решении Вашей проблемы не поможет, если Вы сами не понимаете её причину. Но дело Ваше - мне вообще без разницы. И сколько там кода тоже без разницы.Я открыто написал, что чтобы другие попытались помочь целенаправленно, надо описать свои действия, которые приводят к нежелательным последствиям. Потому что пока я не понимаю, что именно Вы делаете такого, что после этого происходит не то, что должно. Постарайтесь для начала это перечитать и осознать, что в теме пока есть от Вас "я что-то делаю, но происходит что-то не то". Но что именно делаете и что должно по-Вашему происходить вместо того, что происходит - никто кроме Вас до сих пор не знает. Следовательно и проблему помочь решить тоже нельзя, т.к. непонятна сама проблема.Поймите, то, что Вы написали что изменяете ячейку - это не описание того, что делаете. Как минимум пока не напишете что именно вписываете и в какую именно ячейку. Я уже не говорю о том, что изначально в первом сообщении темы Вы ссылаетесь на процедуры Private Sub Worksheet_Change(ByVal Target As Range), которых вообще в файле нет, зато есть Worksheet_SelectionChange, которая и должна выполняться после смены выделяемых ячеек. У меня код из листа срабатывает исключительно при выделении ячейки АХ1. При выделении других ячеек код просто проскакивает на End If, как и должен. тогда при редактировании АХ1 выделение автоматом слетит на АХ2 А сейчас не так, что ли? Вы либо откровенно не понимаете разницу между Worksheet_Change и Worksheet_SelectionChange, или я капитально не пойму, что Вы там вообще мутите и какие костыли придумали.Напишите просто и понятно: что хотите получить? При изменении данных в АХ1 выполнить код? Так смените Worksheet_SelectionChange просто на Worksheet_Change. Уберите из названия Selection И ВСЕ. Название: Re:Автоматическое выполнение макроса Excel при изменении ячейки Отправлено: Novadies от 16.08.2021, 11:16:34 Напишите просто и понятно: что хотите получить? При изменении данных в АХ1 выполнить код? Так смените Worksheet_SelectionChange просто на Worksheet_Change. Уберите из названия Selection И ВСЕ. Збс, спс. |