Excel это не сложно
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
29.03.2024, 01:52:15

Войти
Название темы должно отражать её содержание.
Темы типа "ПОМОГИТЕ!!!", "Срочно!", "Не получается сделать", "Нужна помощь" и т.п. будут удаляться без объяснения причин
33 233 Сообщений в 5 454 Тем от 6 750 Пользователей
Последний пользователь: Alex1210
*
Перейти на сайт Хитрости Надстройка MulTEx Обучающие тренинги Наша группа ВКонтакте
Правила форума Начало Помощь Поиск Календарь Войти Регистрация Выйти
+  Excel это не сложно
|-+  Основные форумы
| |-+  Вопросы по Excel и VBA
| | |-+  Автоматическое выполнение макроса Excel при изменении ячейки
Страниц: [1]   Вниз
Печать
Автор Тема: Автоматическое выполнение макроса Excel при изменении ячейки  (Прочитано 4875 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Novadies
Новичок
*

Репутация: +0/-0
Офлайн Офлайн

Сообщений: 9


Просмотр профиля E-mail
« : 11.08.2021, 15:20:33 »

При попытке использования этих форм столкнулся со странностью, действия после Then выполняются не тогда когда я изменяю значение ячейки (число меняется вручную), то есть по щелчку энтер, а когда я по этой ячейке щелкаю мышкой (даже если значение не изменялось)... Я что-то не так делаю?
Код: (vb)
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("H5")) Is Nothing Then
......
End Sub

или
Код: (vb)
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Target.Worksheet.Range("H5")) Is Nothing Then
.....
End Sub
« Последнее редактирование: 11.08.2021, 16:09:17 от vikttur » Записан
Дмитрий Щербаков(The_Prist)
Администратор
Ветеран
*****

Репутация: +485/-0
Офлайн Офлайн

Сообщений: 5 828



Просмотр профиля WWW
« Ответ #1 : 11.08.2021, 16:03:54 »

Я что-то не так делаю?
Однозначно. И первая проблема в том, что выкладываете коды, которые, как Вам кажется, являются причиной проблем, а не файл, в котором проблема проявляется.
Приведенные коды не срабатывают на выделение, а значит есть еще коды в книге(возможно, Вы о них даже не подозреваете).
Записан

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Пункты приёма Спасибов:    -41001332272872  -R298726502453
Novadies
Новичок
*

Репутация: +0/-0
Офлайн Офлайн

Сообщений: 9


Просмотр профиля E-mail
« Ответ #2 : 11.08.2021, 17:00:01 »


Приведенные коды не срабатывают на выделение, а значит есть еще коды в книге(возможно, Вы о них даже не подозреваете).


Итак я выяснил, что проблема не в содержимом после Then. Значит в чём то другом...
Файл выкладывать не могу по многим причинам.

Думал что дело в  UserForm1, но он пустой
Записан
Непонимающий
Новичок
*

Репутация: +0/-0
Офлайн Офлайн

Сообщений: 7


Просмотр профиля E-mail
« Ответ #3 : 12.08.2021, 13:50:44 »

Файл выкладывать не могу по многим причинам.
1) Если в файле есть конфиденциальная информация, можете её заменить, например, на яблоки и груши.
2) Выложите хотя бы все коды, содержащиеся в файле (коды Вашей Юзерформы и другие).
Записан
Novadies
Новичок
*

Репутация: +0/-0
Офлайн Офлайн

Сообщений: 9


Просмотр профиля E-mail
« Ответ #4 : 12.08.2021, 16:23:47 »

Вот файл, слегка урезанный, но сохранивший все макросы.
Записан
Дмитрий Щербаков(The_Prist)
Администратор
Ветеран
*****

Репутация: +485/-0
Офлайн Офлайн

Сообщений: 5 828



Просмотр профиля WWW
« Ответ #5 : 13.08.2021, 12:29:57 »

В листе ВИК есть событие Worksheet_SelectionChange. Там много кода.
В UserForm кодов вообще нет, поэтому сложно сказать, что может вызывать события. Но тот факт, что событие есть наводит на мысль, что это событие все же может вызываться действиями других макросов в книге.
Записан

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Пункты приёма Спасибов:    -41001332272872  -R298726502453
Novadies
Новичок
*

Репутация: +0/-0
Офлайн Офлайн

Сообщений: 9


Просмотр профиля E-mail
« Ответ #6 : 13.08.2021, 14:05:02 »

Ну так понятно, что там много кода, поэтому я и не видел смысла выкладывать файл. Но весь код направлен на работу с ячейками и вставкой\удалением изображений, поэтому не знаю что там могло вызвать такое странное поведение.
Ещё увидел, что обновление запускается не только по щелчку мышки, но и когда перемещаешь стрелочками текущую выбранную ячейку попадая на ячейку и изменяемыми данными, таким образом непосредственно щелчок мыши ни при чём.
Все другие макросы находятся в модулях и доступны к просмотру....
Записан
Дмитрий Щербаков(The_Prist)
Администратор
Ветеран
*****

Репутация: +485/-0
Офлайн Офлайн

Сообщений: 5 828



Просмотр профиля WWW
« Ответ #7 : 13.08.2021, 14:34:35 »

Ну так понятно, что там много кода
А при чем здесь это? Я вообще на это отвечал:
действия после Then выполняются не тогда когда я изменяю значение ячейки (число меняется вручную), а когда я по этой ячейке щелкаю мышкой
Потому что SelectoinChange как раз на "щелкаю по ячейке мышкой" и срабатывает. И эта обработка у Вас есть. И после ввода данных посредством Enter тоже срабатывает SelectoinChange. Вот изменили Вы значение в ячейке А1 и нажали Enter. Что произошло? Два события:
1. Изменение в ячейке А1 было окончательно изменено.
2. Выделилась ячейка А2, т.к. это стандартное поведение при нажатии Enter в ячейке - переход на следующую ячейку.

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

А вообще, чтобы другие попытались помочь целенаправленно, надо описать свои действия, которые приводят к нежелательным последствиям. Потому что пока я не понимаю, что именно Вы делаете такого, что после этого происходит не то, что должно.
Все другие макросы находятся в модулях и доступны к просмотру
я этого не отрицал. Но что они дают без пояснений того, в какой момент Вас что-то не устраивает? Не вижу смысла проделывать 100500 действий ради выявления того единственного, которое проделываете Вы Улыбка Ведь проще подождать, когда Вы сами напишите что именно Вы делаете, какой получаете результат и какой ожидаете.
« Последнее редактирование: 13.08.2021, 14:36:58 от Дмитрий Щербаков(The_Prist) » Записан

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Пункты приёма Спасибов:    -41001332272872  -R298726502453
Novadies
Новичок
*

Репутация: +0/-0
Офлайн Офлайн

Сообщений: 9


Просмотр профиля E-mail
« Ответ #8 : 13.08.2021, 15:18:33 »

Код после Then взят из макросов! И какая разница много кода там или мало, если я уже написал, что дело не в нём! Почему? Потому что можно код заменить на хеллоу ворд и процедура действовать будет так же.
"И после ввода данных посредством Enter тоже срабатывает SelectoinChange" как-то очень странно срабатывает данная функция, если выражаться литературным языком, ведь в одном случае я просто выделяю ячейку, ничего не изменяя, а в другом изменяю содержимое, но результат должен быть одинаковый, ерунда какая-то.

"
1. Изменение в ячейке А1 было окончательно изменено.
2. Выделилась ячейка А2, т.к. это стандартное поведение при нажатии Enter в ячейке - переход на следующую ячейку.
"

Что ж в таком случае мою проблему(?) можно решить переместив в коде изменяемую область с ячейки АХ1 на АХ2, тогда при редактировании АХ1 выделение автоматом слетит на АХ2 и произойдёт срабатывания скрипта.
По-моему это дебильный костыль, но он работает, ничего лучше, наверное, не сделать. Спасибо за идею. Думаю вопрос можно закрыть.
Записан
Дмитрий Щербаков(The_Prist)
Администратор
Ветеран
*****

Репутация: +485/-0
Офлайн Офлайн

Сообщений: 5 828



Просмотр профиля WWW
« Ответ #9 : 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 И ВСЕ.
« Последнее редактирование: 13.08.2021, 15:43:09 от Дмитрий Щербаков(The_Prist) » Записан

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Пункты приёма Спасибов:    -41001332272872  -R298726502453
Novadies
Новичок
*

Репутация: +0/-0
Офлайн Офлайн

Сообщений: 9


Просмотр профиля E-mail
« Ответ #10 : 16.08.2021, 11:16:34 »

Напишите просто и понятно: что хотите получить? При изменении данных в АХ1 выполнить код? Так смените Worksheet_SelectionChange просто на Worksheet_Change. Уберите из названия Selection И ВСЕ.

Збс, спс.
Записан
Страниц: [1]   Вверх
Печать
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2011, Simple Machines Valid XHTML 1.0! Valid CSS!
Яндекс.Метрика Рейтинг@Mail.ru