Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Как вставить в макрос кнопку, чтобы останавливать цикл VBA Excell
|
|||
|---|---|---|---|
|
#18+
Написал макрос, там в цикле перерисовывается диаграмма. Как вставить кнопку остановки макроса, т.к. данных очень много и не всегда может быть желание дождаться конца. Я кнопку нарисовал. В листе где она находиться прописал что делать когда она нажимается (может не правильно) Код: plaintext 1. 2. 3. Цикл в макросе задан следующим образом Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. Как теперь внутрь цикла вставить, чтобы принажатии кнопки i становилось равным LastRow? Заранее благодарен ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2010, 20:19 |
|
||
|
Как вставить в макрос кнопку, чтобы останавливать цикл VBA Excell
|
|||
|---|---|---|---|
|
#18+
вставить команду DoEvents в цикл (там, где у вас комментарий) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2010, 20:24 |
|
||
|
Как вставить в макрос кнопку, чтобы останавливать цикл VBA Excell
|
|||
|---|---|---|---|
|
#18+
Shocker.Pro, В общем сработало программа остановилась, но из-за ошибки :) Код: plaintext Надо просто DoEvents написать или имя кнопки указать тоже ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2010, 20:38 |
|
||
|
Как вставить в макрос кнопку, чтобы останавливать цикл VBA Excell
|
|||
|---|---|---|---|
|
#18+
alegarhShocker.Pro, В общем сработало программа остановилась, но из-за ошибки :) Код: plaintext Надо просто DoEvents написать или имя кнопки указать тоже ? Покажите весь существенный код, включая определение переменных и укажите строку, на которой произошла ошибка ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2010, 20:44 |
|
||
|
Как вставить в макрос кнопку, чтобы останавливать цикл VBA Excell
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2010, 20:45 |
|
||
|
Как вставить в макрос кнопку, чтобы останавливать цикл VBA Excell
|
|||
|---|---|---|---|
|
#18+
Shocker.Pro, Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. Перед запуском щелкаю на диаграмму которая потом перерисовывается, иначе выскакивает таже ошибка. Про явное указание типов переменных, я уже где-то читал, но здесь не стал заморачиваться, чтобы еще не искать как переменные с помощью Dim определяются :). Но здесь я так понимаю это не причем. Здесь видимо когда я щелкаю на кнопку диаграмма перестает быть активной и программа не знает к чему применить команду ActiveChart.SeriesCollection(1).Values (насколько я понял). Я раньше встречал вот такую команду Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2010, 20:54 |
|
||
|
Как вставить в макрос кнопку, чтобы останавливать цикл VBA Excell
|
|||
|---|---|---|---|
|
#18+
Shocker.Pro, было несколько диаграм раньше, поэтому не знал какой номер сейчас добавил эту строчку все работает без выделения диаграммы в начале, но при нажатии кнопки программа не останавливается. Привожу конечный текст программы Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2010, 21:09 |
|
||
|
Как вставить в макрос кнопку, чтобы останавливать цикл VBA Excell
|
|||
|---|---|---|---|
|
#18+
Вытащил Код: plaintext Теперь после нажатия кнопки вылетает ошибка Метод Select из класса Area завершен не верно и дебаг ссылается на эту строку Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2010, 21:14 |
|
||
|
Как вставить в макрос кнопку, чтобы останавливать цикл VBA Excell
|
|||
|---|---|---|---|
|
#18+
alegarhПро явное указание типов переменных, я уже где-то читал, но здесь не стал заморачиваться Но здесь я так понимаю это не причем В результате переменная i тут: Код: plaintext 1. 2. Код: plaintext 1. 2. 3. Это ваша ошибка при работе с переменными. Что же касается диаграмм мне сложнее дать совет, потому что я с ними очень мало работал. ЗЫ: DoEvents - это дать возможность выполнить другие события, так что лучше вставьте во внутренний цикл. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2010, 21:23 |
|
||
|
Как вставить в макрос кнопку, чтобы останавливать цикл VBA Excell
|
|||
|---|---|---|---|
|
#18+
Shocker.Pro alegarhПро явное указание типов переменных, я уже где-то читал, но здесь не стал заморачиваться Но здесь я так понимаю это не причем В результате переменная i тут: Код: plaintext 1. 2. Код: plaintext 1. 2. 3. Это ваша ошибка при работе с переменными. Что же касается диаграмм мне сложнее дать совет, потому что я с ними очень мало работал. ЗЫ: DoEvents - это дать возможность выполнить другие события, так что лучше вставьте во внутренний цикл. Так я и хотел остановить цикл за счет того, что указал I = LastRow, т.к. i становиться равной LasRow и должна выйти из цикла, т.к. условие выполнения цикла пока i < LastRow Код: plaintext C графиками вопросов не осталось все работает прекрасно, надо только как то научиться выходить из цикла по желанию :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2010, 23:41 |
|
||
|
Как вставить в макрос кнопку, чтобы останавливать цикл VBA Excell
|
|||
|---|---|---|---|
|
#18+
alegarhЯ правильно понял, что это не сработает? Тогда как остановить цикл кнопкой? это не сработает, потому что вы не хотите разбираться - с оператором Dim - с областями определения переменных - с данным мной в FAQ советом - в моем сообщении, в котором я сказал, что эти переменные "i" - это две разных переменных (так же, как и LastRow) и никакого отношения друг к другу не имеют ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2010, 23:50 |
|
||
|
Как вставить в макрос кнопку, чтобы останавливать цикл VBA Excell
|
|||
|---|---|---|---|
|
#18+
Shocker.Pro, я посмотрю определение переменных, но что-то слишком сложно получается. Я решил использовать i = LasRow как самое простое, что мне на ум пришло, но может быть есть другой способ. Например, при нажатии кнопки просто завершить выполнение подпрограммы. Что нить типа, если кнопка нажата, то какой-нить параметр становиться True и тогда я смогу вставить If в котором, при True I = LastRow. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2010, 00:01 |
|
||
|
Как вставить в макрос кнопку, чтобы останавливать цикл VBA Excell
|
|||
|---|---|---|---|
|
#18+
alegarh, Ё-мое я в третий раз вам повторяю, что проблема в том, что это РАЗНЫЕ переменные. Это неважно, что у них одинаковые имена, они определены в РАЗНЫХ процедурах. Будет это LastRow или True - это неважно. Важно то, что переменная "i" в процедуре Anim не изменяется. Чтобы она изменялась, вам нужно определить ее как глобальную или хотя бы на уровне модуля. Если бы вы прочитали мою статью на ФАКе и последовали бы моему совету поставить Option Explicit, вы бы это уже давно поняли. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2010, 00:19 |
|
||
|
Как вставить в макрос кнопку, чтобы останавливать цикл VBA Excell
|
|||
|---|---|---|---|
|
#18+
Shocker.Pro, Спасибо, большое. Обязательно завтра прочитаю, как и говорил :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2010, 02:36 |
|
||
|
Как вставить в макрос кнопку, чтобы останавливать цикл VBA Excell
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2010, 11:40 |
|
||
|
Как вставить в макрос кнопку, чтобы останавливать цикл VBA Excell
|
|||
|---|---|---|---|
|
#18+
Shocker.Pro alegarhЯ правильно понял, что это не сработает? Тогда как остановить цикл кнопкой? это не сработает, потому что вы не хотите разбираться - с оператором Dim - с областями определения переменных - с данным мной в FAQ советом - в моем сообщении, в котором я сказал, что эти переменные "i" - это две разных переменных (так же, как и LastRow) и никакого отношения друг к другу не имеют Прочитал я ваш FAQ только связи я никакой не вижу. Там же не написано как задать переменную чтобы она учавствовала в обоих подпрограммах. А это я как и писал уже раньше читал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2010, 15:13 |
|
||
|
Как вставить в макрос кнопку, чтобы останавливать цикл VBA Excell
|
|||
|---|---|---|---|
|
#18+
alegarhПрочитал я ваш FAQ только связи я никакой не вижу. Там же не написано как задать переменную чтобы она учавствовала в обоих подпрограммах. А это я как и писал уже раньше читал. то есть вы вместо того, чтобы последовать умному совету решили все-таки поспорить на абстрактные темы :) как только у вас появился бы Option Explicit, у вас сразу бы возник вопрос к самому себе, куда написать Dim и вопрос был бы решен. К тому же, ответ на него уже дал alex77755 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2010, 15:30 |
|
||
|
Как вставить в макрос кнопку, чтобы останавливать цикл VBA Excell
|
|||
|---|---|---|---|
|
#18+
вот нашёлся ещё один не знающий Оклиптик ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2010, 15:32 |
|
||
|
Как вставить в макрос кнопку, чтобы останавливать цикл VBA Excell
|
|||
|---|---|---|---|
|
#18+
alex77755, Спасибо, но теперь вообще работать перестало. To All Гляньте, пожалуйста, что я не туда вставил, т.к. из последнего примера у меня много не понятного было. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. Теперь запускаю и сразу ошибка Compile error: Invalid Inside procedure и Debag на первую строчку Sub Anim ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2010, 15:38 |
|
||
|
Как вставить в макрос кнопку, чтобы останавливать цикл VBA Excell
|
|||
|---|---|---|---|
|
#18+
alegarh Теперь запускаю и сразу ошибка Compile error: Invalid Inside procedure и Debag на первую строчку Sub Anim 1) Вам перевести ошибку? 2) Я ведь четко в факе написал: авторНапишите в заголовке каждого своего модуля ( то есть перед всеми другими переменными, функциями и процедурами ): Option Explicit Если вы так внимательно будете слушать советы, вы эту, простенькую, в общем-то, задачу еще неделю решать будете ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2010, 15:40 |
|
||
|
Как вставить в макрос кнопку, чтобы останавливать цикл VBA Excell
|
|||
|---|---|---|---|
|
#18+
alegarh, Вас это: прервать работу любого макроса можно парой клавиш Ctrl+Break Не устраивает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2010, 15:41 |
|
||
|
Как вставить в макрос кнопку, чтобы останавливать цикл VBA Excell
|
|||
|---|---|---|---|
|
#18+
Shocker.ProЕсли вы так внимательно будете слушать советы, вы эту, простенькую, в общем-то, задачу еще неделю решать будете Также посмотрите внимательно, где alex77755 посоветовал вам определить переменную Flag и где вы ее определили. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2010, 16:00 |
|
||
|
Как вставить в макрос кнопку, чтобы останавливать цикл VBA Excell
|
|||
|---|---|---|---|
|
#18+
Shocker.ProShocker.ProЕсли вы так внимательно будете слушать советы, вы эту, простенькую, в общем-то, задачу еще неделю решать будете Также посмотрите внимательно, где alex77755 посоветовал вам определить переменную Flag и где вы ее определили. Также внимательно посмотрите синтаксис Dim Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2010, 16:01 |
|
||
|
Как вставить в макрос кнопку, чтобы останавливать цикл VBA Excell
|
|||
|---|---|---|---|
|
#18+
Ципихович Эндрю, Вот это дельный совет :) C него и надо было начинать. Но не красиво как-то получается, ошибка выскакивает и т.п. Из любви к искуству хочеться сделать красиво :) Я понимаю что это простенькая задача, но учитывая, что я первый раз позавчера вообще VBA открыл и с объектно-ориентированнм програмированием вообще не сталкивался, отсюда и все трудности. Не знаю, я что тут напзывается процедурами и функциями. Включил автоматическую вставку Option Explicit, запустил Макрорекордер и тогда понял, что не туда вставил. Аналогом Option Explicit пользуюсь в фортране, но там она после заголовка программы вставляется вроде, на память не помню, всегда смотрю синтаксис по своим предыдущим програмкам. Перевести я и сам могу только перевод мне ни о чем не говорит. "Неправильная внутренняя процедура". В общем поменял я все/ Заработало снова, но когда нажимаю кнопку стоп. Мне вылетает следующая ошибка Run Time Error 1004: Метод Select из класса PlotArea завершен не верно. Смысл было кнопку городить еслши все равно с ошибкой вылетает. Можно действительно Cntr+Breake и все :) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2010, 16:04 |
|
||
|
Как вставить в макрос кнопку, чтобы останавливать цикл VBA Excell
|
|||
|---|---|---|---|
|
#18+
alegarhМетод Select из класса PlotArea завершен не верно. Смысл было кнопку городить еслши все равно с ошибкой вылетает. Можно действительно Cntr+Breake и все :) Если бы спрашивали, как остановить макрос, получили бы другой совет. Я думаю, проблема в том, что как только вы уводите фокус с активной диаграммы на кнопку, у вас перестает быть актуальным объект ActiveChart. Замените его везде на: Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2010, 16:08 |
|
||
|
|

start [/forum/topic.php?fid=60&msg=36939638&tid=2159281]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
37ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
65ms |
get tp. blocked users: |
1ms |
| others: | 224ms |
| total: | 369ms |

| 0 / 0 |
