powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как вставить в макрос кнопку, чтобы останавливать цикл VBA Excell
19 сообщений из 44, страница 2 из 2
Как вставить в макрос кнопку, чтобы останавливать цикл VBA Excell
    #36940226
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro
Также посмотрите внимательно, где alex77755 посоветовал вам определить переменную Flag и где вы ее определили.
Также внимательно посмотрите синтаксис Dim
Код: plaintext
1.
    Dim i As Integer, yy As Integer, LastRow As Integer, a As String, b As String, c As String
    Dim y As Double, tdelay As Double
[/quot]

Ой сколько читал, кто как настойчиво советует
А почему не так:
Код: plaintext
1.
2.
3.
Dim i As Integer, yy As Integer, LastRow As Integer
Dim a As String, b As String, c As String
Dim y As Double, tdelay As Double
Что сэкономили
...
Рейтинг: 0 / 0
Как вставить в макрос кнопку, чтобы останавливать цикл VBA Excell
    #36940230
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alegarh,

Вы всё-таки приложите/вышлете образец вашего творчества в виде файла?
Поскольку ваш код настолько неоптимален, что все эти рассуждения о DoEvents и Ctrl+Break просто ничто...
...
Рейтинг: 0 / 0
Как вставить в макрос кнопку, чтобы останавливать цикл VBA Excell
    #36940232
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ципихович ЭндрюА почему не так:
тебе, ЦЭ, все можно, особенно переходить дорогу на красный свет.
...
Рейтинг: 0 / 0
Как вставить в макрос кнопку, чтобы останавливать цикл VBA Excell
    #36940238
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProЦипихович ЭндрюА почему не так:
тебе, ЦЭ, все можно, особенно переходить дорогу на красный свет.

Добрый дяденька
Я же говорю, дискуссий много лучше занять больше места и не дискутировать, чтов ВБА проблема с длиной кода???

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Dim i As Integer 'комментарий
Dim yy As Integer
Dim LastRow As Integer
Dim a As String
Dim b As String
Dim c As String
Dim y As Double
Dim tdelay As Double

...
Рейтинг: 0 / 0
Как вставить в макрос кнопку, чтобы останавливать цикл VBA Excell
    #36940242
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ципихович ЭндрюДобрый дяденька
Я же говорю, дискуссий много лучше занять больше места и не дискутировать, чтов ВБА проблема с длиной кода???
Чего ты прикопался? Я поправил у человека ошибку, а если тебе хочется подискутировать о том, сколько должно быть строк в твоем коде, заведи себе тему и там дискутируй.
...
Рейтинг: 0 / 0
Как вставить в макрос кнопку, чтобы останавливать цикл VBA Excell
    #36940246
alegarh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.ProalegarhМетод Select из класса PlotArea завершен не верно. Смысл было кнопку городить еслши все равно с ошибкой вылетает. Можно действительно Cntr+Breake и все :)

Если бы спрашивали, как остановить макрос, получили бы другой совет.

Я думаю, проблема в том, что как только вы уводите фокус с активной диаграммы на кнопку, у вас перестает быть актуальным объект ActiveChart. Замените его везде на:
Код: plaintext
Sheets("Data").ChartObjects( 1 )


Да не конечно хочется сделать все хорошо, поэтому с кнопкой лучше :)

Я поменял везде

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
'    ActiveChart.SeriesCollection(1).Values = a
'    ActiveChart.SeriesCollection(2).Values = b
'    ActiveChart.PlotArea.Select
    
    Sheets("Data").ChartObjects( 1 ).SeriesCollection( 1 ).Values = a
    Sheets("Data").ChartObjects( 1 ).SeriesCollection( 2 ).Values = b
    Sheets("Data").ChartObjects( 1 ).PlotArea.Select

Но при запуске сразу ошибка 438: объект не поддерживает это свойство или метод.

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

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
    Do While i < LastRow

     DoEvents
    
    If (Flag = False) Then
        i = LastRow
    End If

    Loop

Она же после нажатия кнопки должна сделать i = LastRow проверить While < LastRow и выйти из цикла, а она опять внутрь заходит. Т.е. не срабатывает чтоли кнопка. Вывел в ячейку значение i. Так вот после кнопки STOP ни фига оно не LastRow, а остается таким же какое оно в цикле. Т.е. все-таки не срабатывает кнопка.

Код: plaintext
1.
2.
    Dim i As Integer, yy As Integer, LastRow As Integer, a As String, b As String, c As String
    Dim y As Double, tdelay As Double

Поправил, только не понятно почему через запятую нельзя, в Фортране вроде можно одинаковые типы через запятую указывать.
...
Рейтинг: 0 / 0
Как вставить в макрос кнопку, чтобы останавливать цикл VBA Excell
    #36940256
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alegarhЯ поменял везде
Sheets("Data").ChartObjects(1).PlotArea.Select

Но при запуске сразу ошибка 438: объект не поддерживает это свойство или метод.


Тогда попробуйте ThisWorkbook.Charts(1)
Без вашего файла пробовать самому проблематично, поэтому я даю теоретические советы

alegarhДа даже не в этом дело. Почему вообще программа идет на следующий виток цикла, если я прописал

А кто сказал, что она идет на следующий виток? Не должна. Дело в том, что когда вы увели фокус с диаграммы, но еще не нажали на кнопку, цикл продолжает крутиться, соответственно активной диаграммы нет, вот и возникает ошибка.

alegarhОна же после нажатия кнопки должна сделать i = LastRow проверить While < LastRow и выйти из цикла, а она опять внутрь заходит. Т.е. не срабатывает чтоли кнопка. Вывел в ячейку значение i. Так вот после кнопки STOP ни фига оно не LastRow, а остается таким же какое оно в цикле. Т.е. все-таки не срабатывает кнопка.

Или выкладывайте файл и код или осваивайте трассировку.

alegarh
Поправил, только не понятно почему через запятую нельзя, в Фортране вроде можно одинаковые типы через запятую указывать.

Патамушта-марамушта.
Таков синтаксис, это не фортран. Мне претензии предъявлять бессмысленно.
...
Рейтинг: 0 / 0
Как вставить в макрос кнопку, чтобы останавливать цикл VBA Excell
    #36940271
alegarh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.ProalegarhЯ поменял везде
Sheets("Data").ChartObjects(1).PlotArea.Select

Но при запуске сразу ошибка 438: объект не поддерживает это свойство или метод.


Тогда попробуйте ThisWorkbook.Charts(1)
Без вашего файла пробовать самому проблематично, поэтому я даю теоретические советы

alegarhДа даже не в этом дело. Почему вообще программа идет на следующий виток цикла, если я прописал

А кто сказал, что она идет на следующий виток? Не должна. Дело в том, что когда вы увели фокус с диаграммы, но еще не нажали на кнопку, цикл продолжает крутиться, соответственно активной диаграммы нет, вот и возникает ошибка.

alegarhОна же после нажатия кнопки должна сделать i = LastRow проверить While < LastRow и выйти из цикла, а она опять внутрь заходит. Т.е. не срабатывает чтоли кнопка. Вывел в ячейку значение i. Так вот после кнопки STOP ни фига оно не LastRow, а остается таким же какое оно в цикле. Т.е. все-таки не срабатывает кнопка.

Или выкладывайте файл и код или осваивайте трассировку.

alegarh
Поправил, только не понятно почему через запятую нельзя, в Фортране вроде можно одинаковые типы через запятую указывать.

Патамушта-марамушта.
Таков синтаксис, это не фортран. Мне претензии предъявлять бессмысленно.

Я ни в коем случае ничего вам не предъявляю и вообще жутко благодарен, что вы уделили мне столько времени.

Что такое трасировка я не знваю. Выложить хотел файл, но даже после того как я оставил в нем 3 строки в таблице, он занимает 170 лИ и не выкладывается.

Отправил вам и Andre_tm на почту указанную в профиле
...
Рейтинг: 0 / 0
Как вставить в макрос кнопку, чтобы останавливать цикл VBA Excell
    #36940273
alegarh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro

Тогда попробуйте ThisWorkbook.Charts(1)
Без вашего файла пробовать самому проблематично, поэтому я даю теоретические советы



Так тоже не работает ругается.
...
Рейтинг: 0 / 0
Как вставить в макрос кнопку, чтобы останавливать цикл VBA Excell
    #36940278
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alegarhВыложить хотел файл, но даже после того как я оставил в нем 3 строки в таблице, он занимает 170 лИ и не выкладывается.
даже не знаю, имеет ли смысл рассказывать вам о существовании архиваторов...
...
Рейтинг: 0 / 0
Как вставить в макрос кнопку, чтобы останавливать цикл VBA Excell
    #36940283
alegarh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro,

Я уже с этим VBA совсем туплю, спасибо что просвятили :)
...
Рейтинг: 0 / 0
Как вставить в макрос кнопку, чтобы останавливать цикл VBA Excell
    #36940287
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сам себе подсказал... :)

итак
1)
Код: plaintext
    Sheets("Data").ChartObjects( 1 ).Chart.SeriesCollection( 1 ).Values = a\n    Sheets("Data").ChartObjects( 1 ).Chart.SeriesCollection( 2 ).Values = b

2) зачем нужно вот это? вроде без нее все выглядит так же
Код: plaintext
    Sheets("Data").ChartObjects( 1 ).Chart.PlotArea.Select

3) ща разберусь с кнопкой стоп
...
Рейтинг: 0 / 0
Как вставить в макрос кнопку, чтобы останавливать цикл VBA Excell
    #36940294
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro
3) ща разберусь с кнопкой стоп
Тут тоже все понятно
вы определили переменную Flag ДВАЖДЫ
это опять оказались РАЗНЫЕ переменные.
Уберите определение переменной из модуля листа и все заработает

А еще я вам давал совет - сделать DoEvents во внутреннем цикле
иначе пока идет внутренний цикл, на кнопку нажать нельзя - получается дикое тупление

А еще лучше - не дожидайтесь окончания цикла задержки, а выходите сразу:
Код: plaintext
1.
2.
3.
    Do While Timer < y
        DoEvents
        If Flag Then Exit Do
    Loop
...
Рейтинг: 0 / 0
Как вставить в макрос кнопку, чтобы останавливать цикл VBA Excell
    #36940298
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro
А еще лучше - не дожидайтесь окончания цикла задержки, а выходите сразу:
Код: plaintext
1.
2.
3.
    Do While Timer < y
        DoEvents
        If Flag Then Exit Do
    Loop

сорри, у вас там наоборот, так что так:
Код: plaintext
1.
2.
3.
    Do While Timer < y
        DoEvents
        If Not Flag Then Exit Do
    Loop
...
Рейтинг: 0 / 0
Как вставить в макрос кнопку, чтобы останавливать цикл VBA Excell
    #36940300
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProShocker.Pro
А еще лучше - не дожидайтесь окончания цикла задержки, а выходите сразу:
Код: plaintext
1.
2.
3.
    Do While Timer < y
        DoEvents
        If Flag Then Exit Do
    Loop

сорри, у вас там наоборот, так что так:
Код: plaintext
1.
2.
3.
    Do While Timer < y
        DoEvents
        If Not Flag Then Exit Do
    Loop

блин
вот так:
Код: plaintext
1.
2.
3.
4.
    Do While Timer < y
        DoEvents
        If Not Flag Then Exit Do
    Loop
    If Not Flag Then Exit Do
потому что надо выйти из двух циклов
...
Рейтинг: 0 / 0
Как вставить в макрос кнопку, чтобы останавливать цикл VBA Excell
    #36940336
alegarh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.ProShocker.Proпропущено...

сорри, у вас там наоборот, так что так:
Код: plaintext
1.
2.
3.
    Do While Timer < y
        DoEvents
        If Not Flag Then Exit Do
    Loop

блин
вот так:
Код: plaintext
1.
2.
3.
4.
    Do While Timer < y
        DoEvents
        If Not Flag Then Exit Do
    Loop
    If Not Flag Then Exit Do
потому что надо выйти из двух циклов

Огромнейшее спасибо. Переменную Flag я второй раз определил, т.к. не работало. Вначале была в одном месте :)

Exit Do конечно же лучше, я где-то раньше спрашивал как просто выйти из цикла.

Еще раз огромное спасибо.
...
Рейтинг: 0 / 0
Как вставить в макрос кнопку, чтобы останавливать цикл VBA Excell
    #36941396
Фотография alex77755
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Апочему сразу не закончить процедуру?
Код: plaintext
1.
2.
Do While Timer < y
        DoEvents
        If Not Flag Then Exit sub
...
Рейтинг: 0 / 0
Как вставить в макрос кнопку, чтобы останавливать цикл VBA Excell
    #36941426
alegarh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alex77755,

Ok :) Спасибо.
...
Рейтинг: 0 / 0
Как вставить в макрос кнопку, чтобы останавливать цикл VBA Excell
    #36941455
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex77755Апочему сразу не закончить процедуру?
Код: plaintext
1.
2.
Do While Timer < y
        DoEvents
        If Not Flag Then Exit sub

после цикла могут быть еще какие-то нужные действия, поэтому не стал предлагать такой вариант
...
Рейтинг: 0 / 0
19 сообщений из 44, страница 2 из 2
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как вставить в макрос кнопку, чтобы останавливать цикл VBA Excell
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]