![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 07.09.2017
Сообщений: 44
|
![]()
Всем привет. Имеется строка с итогами, которые рассчитываются макросом. Всё работает нормально, но при удалении строки не происходит перерасчет итогов. Как бы устранить эту проблему в моём документе ? В VBA познания мизерные, строго не судить за код, т.к. слеплено из разных источников. Всем, откликнувшимся, спасибо. Файл во вложении.
|
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]()
зачем использовать макросы там, где можно прекрасно обойтись формулами?
они будут работать и быстрее и надёжнее. да и это проще, в конце концов! |
![]() |
![]() |
![]() |
#3 |
Форумчанин
Регистрация: 11.10.2010
Сообщений: 134
|
![]()
Не, ну при желании конечно можно отследить удаление строки, но в данном случае действительно проще формулами обойтись. Либо можно сделать удаление строки с помощью макроса.
|
![]() |
![]() |
![]() |
#4 |
Новичок
СтарожилДжуниор
Регистрация: 05.02.2008
Сообщений: 9,487
|
![]()
сделать удаление строки с помощью макроса - легко
отследить удаление строки - чуть сложнее, но действительно можно а самый геморрой - запретить пользователю удалять строку стандартными средствами (только в этом контролируемом файле, в остальных-то можно, зачем пользователя ограничивать, он начнет нервничать) т.е. с практической точки зрения формула - это идеальное решение, но с познавательной (если интересно осваивать VBA) - можно заморочиться со всеми этими макросами. и замечено: кому интересно осваивать, тот тихонько и самостоятельно ищет ответы на возникшие вопросы)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
|
![]() |
![]() |
![]() |
#5 |
Пользователь
Регистрация: 07.09.2017
Сообщений: 44
|
![]()
Понятно, что формула в данном случае лучше всего. Но хотелось бы узнать, как это можно сделать макросом. Пример решения этого мне в инете не попадался, вот и интересуюсь.
|
![]() |
![]() |
![]() |
#6 |
Форумчанин
Регистрация: 22.06.2011
Сообщений: 325
|
![]()
Модифицировал
Заказать макрос можно на сайте http://excel4you.ru/
|
![]() |
![]() |
![]() |
#7 |
Форумчанин
Регистрация: 11.10.2010
Сообщений: 134
|
![]() |
![]() |
![]() |
![]() |
#8 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]()
так технически это не сложно.
дело в том, что процедура, которая у Вас назначена в качестве обработчика при событии возникновения изменений на листе (я имею в виду Worksheet_Change), вызывается и в случае удаления. это легко посмотреть - либо сделайте точку останова в коде, либо вставьте в процедуру первой строчкой MsgBox например, Код:
можно, например, не заморачиваться и при любом вызове Worksheet_Change пересчитывать итоги. Производительность, конечно, рухнет ниже плинтуса. Можно пытаться оптимизировать - например, при удалении/вставки строки - счётчик Target.Cells.Count равен 16384 (для одной строки - если выделено несколько строк - то надо умножить на число строк) и вызывать пересчёт только в этом случае. Но это всё равно "квадратные колёса" - не смысла в этом нет, ни проку, ни скорости, ни надёжности. Вообще, запомните "золотое" правило макросов в MS Excel ( (c) не мой) - "Всё, что может быть сделано без макросов (формулами) должно быть сделано без макросов (формулами)." |
![]() |
![]() |
![]() |
#9 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]() |
![]() |
![]() |
![]() |
#10 |
Пользователь
Регистрация: 07.09.2017
Сообщений: 44
|
![]()
Огромное спасибо Watcher_1 за решение проблемы и конечно всем, принявшим участие в обсуждении, за советы.
Последний раз редактировалось irina181; 12.10.2017 в 17:08. |
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Макрос удаления 300 строк после .... | lakcin | Microsoft Office Excel | 3 | 31.08.2014 15:04 |
Добавляется новая строка после удаления | Dozent | БД в Delphi | 5 | 11.02.2014 17:21 |
Сортировка кода в таблице после удаления | allegator333 | БД в Delphi | 5 | 20.05.2011 21:57 |
Очищение DateTimePicker после удаления записи | Droid | БД в Delphi | 9 | 21.10.2009 15:57 |
Очистка формата после удаления макроса | valerij | Microsoft Office Excel | 2 | 14.06.2008 12:00 |