Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.10.2008, 15:36   #1
Gawwws
Пользователь
 
Регистрация: 18.10.2008
Сообщений: 65
Вопрос Визуализация работы макроса

Кто-то может полсказать как сделать так, что-бы во время выполнения макоса выскакивала форма с бегущей строкой выполнения макроса или хотя-бы просто сообщение "Подождите"
Gawwws вне форума Ответить с цитированием
Старый 20.10.2008, 16:26   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Один из вариантов реализации прогресс-бара с использованием стандартных элементов управления:


Новая версия индикатора: (щелкните на изображении для загрузки файла)





Cтарая версия - во вложении:
Вложения
Тип файла: rar прогресс.rar (17.6 Кб, 342 просмотров)

Последний раз редактировалось EducatedFool; 10.11.2009 в 11:05.
EducatedFool вне форума Ответить с цитированием
Старый 24.10.2008, 18:22   #3
GES
Пользователь
 
Регистрация: 27.08.2008
Сообщений: 23
По умолчанию

Можно без формы: Application.StatusBar = i & "%"
GES вне форума Ответить с цитированием
Старый 10.01.2009, 23:03   #4
SIV84
Пользователь
 
Регистрация: 09.01.2009
Сообщений: 44
По умолчанию

Вполне устраивает. Спасибо
SIV84 вне форума Ответить с цитированием
Старый 13.10.2009, 23:17   #5
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

В ходе обсуждения темы прогресс-бара на соседнем форуме возникли новые идеи по реализации прогресс-бара (с использованием строки состояния Excel)

Код очень простой:
Код:
Sub test1()
    For i = 1 To 10000
        p = i \ 100: s = "": For j = 10102 To 10102 + p \ 10: s = s & ChrW(j): Next
        Application.StatusBar = "Выполнено: " & p & "% " & s: DoEvents: DoEvents
    Next
    Application.StatusBar = False
End Sub


Sub test2()
    For i = 1 To 10000
        p = i \ 100: s = String(p \ 10, ChrW(10152)) & String(10 - p \ 10, ChrW(8700))
        Application.StatusBar = "Выполнено: " & p & "% " & s: DoEvents
    Next
    Application.StatusBar = False
End Sub
См. пример файла:

EducatedFool вне форума Ответить с цитированием
Старый 11.08.2010, 09:53   #6
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Опубликовал последнюю версию своего прогресс-бара на сайте: http://excelvba.ru/tools/ProgressIndicator

Дополнительно реализована поддержка дочерних прогресс-баров.
EducatedFool вне форума Ответить с цитированием
Старый 11.08.2010, 10:59   #7
alvazor
Форумчанин
 
Регистрация: 02.07.2009
Сообщений: 122
По умолчанию

AducatedFool - красивые варианты, слов нет!
Подскажите пожалуйста, если не трудно (для меня DoEvents и генератор случайных чисел - пока туманные понятия, увы)
Интересует простенький прогресс-бар, индицирующий процесс пуска программы и выхода из нее (достаточно длительные), а длительность этих процессов - неопределенная, и зависит от версии.
Видел варианты (в InnoSetup, в частности) прогресс-бара, который заведомо медленно начинает закрашивать этикетку, а по завершению процесса - быстро завершает закраску и исчезает. Нет ли у Вас подобного варианта? Как модифицировать опубликованное - не соображу...
С уважением
alvazor вне форума Ответить с цитированием
Старый 11.08.2010, 11:39   #8
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Так уберите из кода всё лишнее...

Оставьте, например, такой код:
Код:
Sub ПримерИспользованияПрогрессБара()
    Dim pi As New ProgressIndicator ' создаём новый прогресс-бар
    pi.Show "Внимание - работает программа": pi.ShowPercents = False: pi.ShowTime = False
    pi.StartNewAction 0, 0, "Ничего не нажимайте - просто подождите"

    ' ваш макрос здесь
    For i = 1 To 20000: Cells(i) = i: Next

    pi.Hide    ' закрываем основной индикатор
End Sub
Вот пример в виде файла: http://excelvba.ru/XL_Files/Sample__...__13-39-38.zip

Ну или просто отображайте форму:
Код:
Sub ПримерИспользованияФормы()
    F_Progress.Show

    ' ваш макрос здесь
    For i = 1 To 20000: Cells(i) = i: DoEvents: Next

    F_Progress.Hide
End Sub
Пример в файле: http://excelvba.ru/XL_Files/Sample__...__13-44-02.zip

Последний раз редактировалось EducatedFool; 11.08.2010 в 11:44.
EducatedFool вне форума Ответить с цитированием
Старый 11.08.2010, 11:56   #9
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Очень простенький вариант с демострацией работы без визуализации, а потом с ней.
на мой взгляд если что-то выполняется больше 2 секунд - надо человека занять чем-то, чтобы отвлечь его от тягостных дум типа "а что происходит?, а когда это закончится?". оператор из категории "полной непонятки" переходит в категорию "контролирующего процесс" - это добавляет ему уверенности и уважения к себе от понимания собственной важности в происходящем.
Вложения
Тип файла: rar Книга382.rar (8.4 Кб, 232 просмотров)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 11.08.2010, 13:13   #10
alvazor
Форумчанин
 
Регистрация: 02.07.2009
Сообщений: 122
По умолчанию

Спасибо большущее, EducatedFool и IgorGo - не ожидал таких быстрых ответов, разбираюсь.
Для сведения:
- в файле ...13-44-02.zip имя п/п ПримерИспользованияФормы, а ссылка - ПримерИспользованияПрогрессВара (мелочи жизни)
- а вот файл ...13-39-38.zip при включенных макросах запускается с сообщением Excel "Ошибка файла! Данные м.б. утеряны" - а далее вроде бы запускается. Но первый пуск (при открытии книги) и пуск по кнопке отличаются. В первом успевает мелькнуть зеленая полоса этикетки...
Со строкой состояния вроде понятно
Еще раз спасибо!
alvazor вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
BASS Визуализация Garacio_cain Мультимедиа в Delphi 2 14.08.2008 00:19
Перенос макроса в модуль valerij Microsoft Office Excel 6 09.06.2008 23:13
Привязка макроса к кнопке VisuaL Microsoft Office Excel 7 10.05.2008 07:04
Запись макроса valerij Microsoft Office Excel 5 01.12.2007 00:49
визуализация алгоритма Alar Паскаль, Turbo Pascal, PascalABC.NET 0 30.10.2006 14:10