Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Счетчик циклов макроса - как реализовать?? - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
Страница 1 из 11
Модератор форума: _Boroda_, Pelena, Manyasha, SLAVICK 
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Счетчик циклов макроса - как реализовать?? (Макросы/Sub)
Счетчик циклов макроса - как реализовать??
Tina90 Дата: Четверг, 19.05.2016, 12:26 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 45
Репутация: -16 ±
Замечаний: 60% ±

Excel 2013
Привет люди!! у меня вопрос, как сделать всплывающее окно, чтоб при запуске макроса в нем отображалось кол-во пройденных (или оставшихся) циклов??
[vba]
Код

Sub XXX()
blablabla
For i = 1 To 100
blablabla
Next i
[/vba]
и чтоб это окно можно было закрыть только принудительно, ну чтоб оно самостоятельно не закрывалось после выполнения всех циклов!!!
 
Ответить
СообщениеПривет люди!! у меня вопрос, как сделать всплывающее окно, чтоб при запуске макроса в нем отображалось кол-во пройденных (или оставшихся) циклов??
[vba]
Код

Sub XXX()
blablabla
For i = 1 To 100
blablabla
Next i
[/vba]
и чтоб это окно можно было закрыть только принудительно, ну чтоб оно самостоятельно не закрывалось после выполнения всех циклов!!!

Автор - Tina90
Дата добавления - 19.05.2016 в 12:26
Manyasha Дата: Четверг, 19.05.2016, 12:36 | Сообщение № 2
Группа: Модераторы
Ранг: Старожил
Сообщений: 1589
Репутация: 669 ±
Замечаний: 0% ±

Excel 2007, 2010
Tina90, так хотите?
[vba]
Код
Sub XXX()
n = 100
MsgBox "Осталось " & n
For i = 1 To n
MsgBox "Пройдено " & i & ", осталось " & n - i
Next i
End Sub
[/vba]
а для чего Вам это нужно?


marinamorozova_box@mail.ru
ЯД: 410013299366744 WM: R193491431804
 
Ответить
СообщениеTina90, так хотите?
[vba]
Код
Sub XXX()
n = 100
MsgBox "Осталось " & n
For i = 1 To n
MsgBox "Пройдено " & i & ", осталось " & n - i
Next i
End Sub
[/vba]
а для чего Вам это нужно?

Автор - Manyasha
Дата добавления - 19.05.2016 в 12:36
Tina90 Дата: Четверг, 19.05.2016, 12:48 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 45
Репутация: -16 ±
Замечаний: 60% ±

Excel 2013
а для чего Вам это нужно?

Спасибо!! я вечером протестирую предложенный Вами вариант! мне это нужно, чтоб визуально определять сколько еще часов комп будет занят выполнением макроса, чтоб не ждать и пересаживаться за другой комп и играть это время в WOW или Zanzarah !!! hands
 
Ответить
Сообщение
а для чего Вам это нужно?

Спасибо!! я вечером протестирую предложенный Вами вариант! мне это нужно, чтоб визуально определять сколько еще часов комп будет занят выполнением макроса, чтоб не ждать и пересаживаться за другой комп и играть это время в WOW или Zanzarah !!! hands

Автор - Tina90
Дата добавления - 19.05.2016 в 12:48
Manyasha Дата: Четверг, 19.05.2016, 13:01 | Сообщение № 4
Группа: Модераторы
Ранг: Старожил
Сообщений: 1589
Репутация: 669 ±
Замечаний: 0% ±

Excel 2007, 2010
сколько еще часов комп будет занят выполнением макроса

Жуть какая!

При появлении окна макрос остановит свое выполнение и продолжит работу только после того, как Вы нажмете ОК!
Не понимаю зачем Вам
чтоб это окно можно было закрыть только принудительно

Выводите информацию в окно immediate (ctrl+g):
[vba]
Код
Sub XXX()
n = 100
debug.print "Осталось " & n
For i = 1 To n
debug.print "Пройдено " & i & ", осталось " & n - i
Next i
End Sub
[/vba]

А вообще, макросы не должны так долго выполняться, нужно оптимизировать код. Хотя, тогда не получится
играть это время в WOW или Zanzarah !!!
:D


marinamorozova_box@mail.ru
ЯД: 410013299366744 WM: R193491431804
 
Ответить
Сообщение
сколько еще часов комп будет занят выполнением макроса

Жуть какая!

При появлении окна макрос остановит свое выполнение и продолжит работу только после того, как Вы нажмете ОК!
Не понимаю зачем Вам
чтоб это окно можно было закрыть только принудительно

Выводите информацию в окно immediate (ctrl+g):
[vba]
Код
Sub XXX()
n = 100
debug.print "Осталось " & n
For i = 1 To n
debug.print "Пройдено " & i & ", осталось " & n - i
Next i
End Sub
[/vba]

А вообще, макросы не должны так долго выполняться, нужно оптимизировать код. Хотя, тогда не получится
играть это время в WOW или Zanzarah !!!
:D

Автор - Manyasha
Дата добавления - 19.05.2016 в 13:01
Tina90 Дата: Четверг, 19.05.2016, 13:08 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 45
Репутация: -16 ±
Замечаний: 60% ±

Excel 2013
При появлении окна макрос остановит свое выполнение и продолжит работу только после того, как Вы нажмете ОК!

нет!!!!! мне нужно чтоб макрос не прерывался и не ждал от меня каких то нажатий в процессе выполнения циклов!! он должен продолжать делать циклы, просто визуально чтоб я видела сколько еще осталось и закрыла его в конце после завершения (или это вообще не надо, чтоб закрывался вручную, важно чтоб висел в процессе и давал видеть сколько еще циклов осталось)!!!
(у меня все максимально оптимизировано, просто коипы заточены под видео а не математику! может когда куплю комп с мат сопроцессором) :D
[moder]
у меня все максимально оптимизировано

Не может возникнуть и тени сомнения в этом. А уж просмотрев Ваши вопросы на форуме ...


Сообщение отредактировал Tina90 - Четверг, 19.05.2016, 13:11
 
Ответить
Сообщение
При появлении окна макрос остановит свое выполнение и продолжит работу только после того, как Вы нажмете ОК!

нет!!!!! мне нужно чтоб макрос не прерывался и не ждал от меня каких то нажатий в процессе выполнения циклов!! он должен продолжать делать циклы, просто визуально чтоб я видела сколько еще осталось и закрыла его в конце после завершения (или это вообще не надо, чтоб закрывался вручную, важно чтоб висел в процессе и давал видеть сколько еще циклов осталось)!!!
(у меня все максимально оптимизировано, просто коипы заточены под видео а не математику! может когда куплю комп с мат сопроцессором) :D
[moder]
у меня все максимально оптимизировано

Не может возникнуть и тени сомнения в этом. А уж просмотрев Ваши вопросы на форуме ...

Автор - Tina90
Дата добавления - 19.05.2016 в 13:08
Manyasha Дата: Четверг, 19.05.2016, 13:52 | Сообщение № 6
Группа: Модераторы
Ранг: Старожил
Сообщений: 1589
Репутация: 669 ±
Замечаний: 0% ±

Excel 2007, 2010
Tina90, можно сделать маленькую юзерформу:
[vba]
Код
Public i, n
Sub test()
    n = 10
    UserForm1.Show 0
    For i = 1 To n
        Application.Wait (Now + TimeValue("0:00:01 ")) 'Имитация выполнения какого-то кода
        UserForm1.Label1 = "Пройдено " & i & ", осталось " & n - i
        DoEvents
    Next i
    UserForm1.Label1 = "ГОТОВО!"
End Sub
[/vba]
К сообщению приложен файл: test.xlsm(17Kb)


marinamorozova_box@mail.ru
ЯД: 410013299366744 WM: R193491431804
 
Ответить
СообщениеTina90, можно сделать маленькую юзерформу:
[vba]
Код
Public i, n
Sub test()
    n = 10
    UserForm1.Show 0
    For i = 1 To n
        Application.Wait (Now + TimeValue("0:00:01 ")) 'Имитация выполнения какого-то кода
        UserForm1.Label1 = "Пройдено " & i & ", осталось " & n - i
        DoEvents
    Next i
    UserForm1.Label1 = "ГОТОВО!"
End Sub
[/vba]

Автор - Manyasha
Дата добавления - 19.05.2016 в 13:52
Tina90 Дата: Четверг, 19.05.2016, 15:49 | Сообщение № 7
Группа: Пользователи
Ранг: Новичок
Сообщений: 45
Репутация: -16 ±
Замечаний: 60% ±

Excel 2013
можно сделать маленькую юзерформу

Маняша, большое Вам спасибо!!!
 
Ответить
Сообщение
можно сделать маленькую юзерформу

Маняша, большое Вам спасибо!!!

Автор - Tina90
Дата добавления - 19.05.2016 в 15:49
wild_pig Дата: Четверг, 19.05.2016, 16:27 | Сообщение № 8
Группа: Проверенные
Ранг: Обитатель
Сообщений: 458
Репутация: 85 ±
Замечаний: 0% ±

2003, 2013
мат сопроцессором

Пардон, какой у вас сейчас процессор стоит.
Если код выполнялся долго, сейчас будет долго + обновить информацию на форме.
 
Ответить
Сообщение
мат сопроцессором

Пардон, какой у вас сейчас процессор стоит.
Если код выполнялся долго, сейчас будет долго + обновить информацию на форме.

Автор - wild_pig
Дата добавления - 19.05.2016 в 16:27
Tina90 Дата: Четверг, 19.05.2016, 16:39 | Сообщение № 9
Группа: Пользователи
Ранг: Новичок
Сообщений: 45
Репутация: -16 ±
Замечаний: 60% ±

Excel 2013
какой у вас сейчас процессор стоит


286DX2...

шутка. asus transformer, 1.3 по моему! 4 Гб РОМ. еще asus F9E, HP лень смотреть какой с полудохлой акб, Samsung NF310 1.2 + 2G Rom вообще тормоз. лучше всего работает в Экселе Трансформер!
 
Ответить
Сообщение
какой у вас сейчас процессор стоит


286DX2...

шутка. asus transformer, 1.3 по моему! 4 Гб РОМ. еще asus F9E, HP лень смотреть какой с полудохлой акб, Samsung NF310 1.2 + 2G Rom вообще тормоз. лучше всего работает в Экселе Трансформер!

Автор - Tina90
Дата добавления - 19.05.2016 в 16:39
wild_pig Дата: Четверг, 19.05.2016, 16:43 | Сообщение № 10
Группа: Проверенные
Ранг: Обитатель
Сообщений: 458
Репутация: 85 ±
Замечаний: 0% ±

2003, 2013
А сколько выполнение задачи занимает времени?
 
Ответить
СообщениеА сколько выполнение задачи занимает времени?

Автор - wild_pig
Дата добавления - 19.05.2016 в 16:43
Tina90 Дата: Четверг, 19.05.2016, 18:05 | Сообщение № 11
Группа: Пользователи
Ранг: Новичок
Сообщений: 45
Репутация: -16 ±
Замечаний: 60% ±

Excel 2013
А сколько


по разному!! иногда 18 часов, иногда 4 суток!
 
Ответить
Сообщение
А сколько


по разному!! иногда 18 часов, иногда 4 суток!

Автор - Tina90
Дата добавления - 19.05.2016 в 18:05
wild_pig Дата: Четверг, 19.05.2016, 23:32 | Сообщение № 12
Группа: Проверенные
Ранг: Обитатель
Сообщений: 458
Репутация: 85 ±
Замечаний: 0% ±

2003, 2013
Ну, собственно в 5-м посте уже есть те строки, которые хотелось высказать. Что-то вы не так делаете в своём секретном файле. Набросали бы примерчик, и свой макрос не забыли вложить - нашлись бы народные умельцы и довели до ума код.
 
Ответить
СообщениеНу, собственно в 5-м посте уже есть те строки, которые хотелось высказать. Что-то вы не так делаете в своём секретном файле. Набросали бы примерчик, и свой макрос не забыли вложить - нашлись бы народные умельцы и довели до ума код.

Автор - wild_pig
Дата добавления - 19.05.2016 в 23:32
SLAVICK Дата: Пятница, 20.05.2016, 09:32 | Сообщение № 13
Группа: Модераторы
Ранг: Старожил
Сообщений: 1849
Репутация: 614 ±
Замечаний: 0% ±

2007,2010,2013,2016
А я стараюсь не использовать юзерформы в простых проектах, есть же "специальное место" - статусбар :D :
На основе макроса от Manyasha, :
[vba]
Код
Sub test()
    n = 10
    For i = 1 To n
        Application.Wait (Now + TimeValue("0:00:01 ")) 'Имитация выполнения какого-то кода
        Application.StatusBar = Format(i / n, "0%") & ". Пройдено " & i & ", осталось " & n - i
        DoEvents
    Next i
Application.StatusBar = False
End Sub
[/vba]

ЗЫ Manyasha, в Ваш код еще repaint лучше добавлять - просто так форма не всегда обновляется. ;)
К сообщению приложен файл: 3562542.xlsm(16Kb) · 5647866.jpg(29Kb)


Иногда все проще чем кажется с первого взгляда.
 
Ответить
СообщениеА я стараюсь не использовать юзерформы в простых проектах, есть же "специальное место" - статусбар :D :
На основе макроса от Manyasha, :
[vba]
Код
Sub test()
    n = 10
    For i = 1 To n
        Application.Wait (Now + TimeValue("0:00:01 ")) 'Имитация выполнения какого-то кода
        Application.StatusBar = Format(i / n, "0%") & ". Пройдено " & i & ", осталось " & n - i
        DoEvents
    Next i
Application.StatusBar = False
End Sub
[/vba]

ЗЫ Manyasha, в Ваш код еще repaint лучше добавлять - просто так форма не всегда обновляется. ;)

Автор - SLAVICK
Дата добавления - 20.05.2016 в 09:32
Hugo Дата: Пятница, 20.05.2016, 09:41 | Сообщение № 14
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2653
Репутация: 597 ±
Замечаний: 0% ±

Можно ещё добавить - если цикл быстрый но долгий, то если выводить на обозрение каждый шаг - это заметно замедлит основную работу. Тогда можно выводить только каждый 100-й, 333-й или 1000-й шаг.
[moder][offtop]
цикл быстрый но долгий
Супер![/offtop][/moder]


excel@nxt.ru
webmoney: E265281470651 R418926282008 Z422237915069


Сообщение отредактировал _Boroda_ - Пятница, 20.05.2016, 10:57
 
Ответить
СообщениеМожно ещё добавить - если цикл быстрый но долгий, то если выводить на обозрение каждый шаг - это заметно замедлит основную работу. Тогда можно выводить только каждый 100-й, 333-й или 1000-й шаг.
[moder][offtop]
цикл быстрый но долгий
Супер![/offtop][/moder]

Автор - Hugo
Дата добавления - 20.05.2016 в 09:41
Manyasha Дата: Пятница, 20.05.2016, 10:52 | Сообщение № 15
Группа: Модераторы
Ранг: Старожил
Сообщений: 1589
Репутация: 669 ±
Замечаний: 0% ±

Excel 2007, 2010
я стараюсь не использовать юзерформы

Я тоже) Но после молчания на мое предложение
Выводите информацию в окно immediate
сделала вывод, что ТС все же хочет
чтоб это окно можно было закрыть только принудительно, ну чтоб оно самостоятельно не закрывалось после выполнения всех циклов

[offtop]
Manyasha, в Ваш код
А чего это мы на Вы? :)
[/offtop]


marinamorozova_box@mail.ru
ЯД: 410013299366744 WM: R193491431804
 
Ответить
Сообщение
я стараюсь не использовать юзерформы

Я тоже) Но после молчания на мое предложение
Выводите информацию в окно immediate
сделала вывод, что ТС все же хочет
чтоб это окно можно было закрыть только принудительно, ну чтоб оно самостоятельно не закрывалось после выполнения всех циклов

[offtop]
Manyasha, в Ваш код
А чего это мы на Вы? :)
[/offtop]

Автор - Manyasha
Дата добавления - 20.05.2016 в 10:52
SLAVICK Дата: Пятница, 20.05.2016, 11:04 | Сообщение № 16
Группа: Модераторы
Ранг: Старожил
Сообщений: 1849
Репутация: 614 ±
Замечаний: 0% ±

2007,2010,2013,2016
сделала вывод, что ТС все же хочет

Ну не знаю.
Я, в последнее время, если вывожу юзерформу с отрисовкой этапа процесса - окно Excel вообще прячу - так и быстрее и не видно ничего лишнего, и "наклацать" пользователи не смогут. :D

Супер!

Саш имеется ввиду быстро изменяемая переменная, в длинном цикле.
[offtop]Борода: Да понял я, понял, не дурней паровоза :D . Но звучит-то как! Я исключительно про это. [/offtop]
Вот если к примеру нужно пройти цикл в 1млн, то вывод состояния существенно замедлит работу.
Вот такой каламбурчик :D

[offtop]
А чего это мы на Вы?
Это у меня такая привычка "дурная" - если пишу кому-то - то на Вы. Если тебя это смущает - буду на ты
[/offtop]
К сообщению приложен файл: 2570679.gif(55Kb)


Иногда все проще чем кажется с первого взгляда.
 
Ответить
Сообщение
сделала вывод, что ТС все же хочет

Ну не знаю.
Я, в последнее время, если вывожу юзерформу с отрисовкой этапа процесса - окно Excel вообще прячу - так и быстрее и не видно ничего лишнего, и "наклацать" пользователи не смогут. :D

Супер!

Саш имеется ввиду быстро изменяемая переменная, в длинном цикле.
[offtop]Борода: Да понял я, понял, не дурней паровоза :D . Но звучит-то как! Я исключительно про это. [/offtop]
Вот если к примеру нужно пройти цикл в 1млн, то вывод состояния существенно замедлит работу.
Вот такой каламбурчик :D

[offtop]
А чего это мы на Вы?
Это у меня такая привычка "дурная" - если пишу кому-то - то на Вы. Если тебя это смущает - буду на ты
[/offtop]

Автор - SLAVICK
Дата добавления - 20.05.2016 в 11:04
Hugo Дата: Пятница, 20.05.2016, 11:05 | Сообщение № 17
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2653
Репутация: 597 ±
Замечаний: 0% ±

цикл быстрый но долгий
:)
Вызывает когнитивный диссонанс? Оксюморон? :)
Но ведь понятно - бежит быстро, но оочень долго... Потому что если быстро и быстро - нет нужды выводить вообще :)
Если бежит медленно - тогда можно выводить каждый шаг, особо не повлияет.


excel@nxt.ru
webmoney: E265281470651 R418926282008 Z422237915069
 
Ответить
Сообщение
цикл быстрый но долгий
:)
Вызывает когнитивный диссонанс? Оксюморон? :)
Но ведь понятно - бежит быстро, но оочень долго... Потому что если быстро и быстро - нет нужды выводить вообще :)
Если бежит медленно - тогда можно выводить каждый шаг, особо не повлияет.

Автор - Hugo
Дата добавления - 20.05.2016 в 11:05
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Счетчик циклов макроса - как реализовать?? (Макросы/Sub)
Страница 1 из 11
Поиск:

Яндекс цитирования
© 2010-2016 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!