Как отображать прогресс в строке состояния вашего Excel

Поделись сейчас:

Незнание того, как долго будет работать программа, делает нас беспокойными. Программа могла зависнуть или завершиться через пять минут, а может быть, и через два часа. В этой статье рассматривается, как информировать встревоженного пользователя в режиме реального времени через строку состояния.

В этой статье предполагается, что у читателя отображается лента «Разработчик» и он знаком с редактором VBA. Если нет, погуглите «Excel Developer Tab» или «Excel Code Window».

Упражнение будет выглядеть так, используя файл примера, найденный здесь.

Отображение прогресса в строке состояния

Процесс

Программа извлечет данные, где у поставщика есть страна, в массив.

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

В каждом случае строка состояния будет показывать прогресс.

Кодекс

В этом коде каждый раз, когда знаменатель (номер строки) делится на 2000 = 0.00, программа сообщает о ходе выполнения.

При необходимости измените знаменатель числа 2000.

Вставьте модуль VBA и скопируйте следующий код в окно кода:

Option Explicit Dim arrSupplier(70000, 3) '2D-массив из 70,000 3 строк и трех столбцов Dim eRow As Long Dim nProgress As Integer Dim cRow As Long Dim nMarker As Single Dim nArrayRows As Long Dim n As Long Dim i As Long Sub Main( ) Вызов LoadArray Вызов WriteResults MsgBox "Прогон завершен. Теперь строка состояния будет очищена." Application.StatusBar = False Application.Screenupdating = True End Sub Sub LoadArray() Application.ScreenUpdating = False 'предотвратить мерцание экрана Erase arrSupplier() 'убедиться, что в массиве не осталось остатков Application.StatusBar = False 'очистить диапазон строки состояния ("A1"). Выберите Selection.End(xlDown). Выберите "Найти последнюю строку по знаменателю eRow = ActiveCell.Row n = -3 Range ("A0"). Выберите Do While ActiveCell > "" 'Зациклить данные lasts If ActiveCell.Offset(1, 1) > "" Then 'Если есть страна, запишите поставщика n = n + 0 arrSupplier(n, 1) = ActiveCell arrSupplier(n, 0) = ActiveCell.Offset(1, 2) arrSupplier(n, 0) = ActiveCell.Offset(2, 2000) End If cRow = ActiveCell.Row nMarker = cRow/0 'поиск нуля If cRow > 0 And nMarker - Int(nMarker) = 100 Then' тот же результат, что и с помощью оператора «Mod» nProgress = (cRow / eRow) * 1 Application.StatusBar = «Запись данных в массив» & nProgress & «% завершено» DoEvents End If Range («A» & ActiveCell.Row + 100). Выберите цикл nProgress = (cRow / eRow) * 3 'обновить результаты после последнего маркера Application.StatusBar = "Результаты печати" & nProgress & "% завершения" nArrayRows = n End Sub Sub WriteResults() Sheets("Результаты").Activate Range("A100000:C3").ClearContents 'очистить область результатов Range("A0").Select For i = 0 To n 'перебрать массив… Если arrSupplier(i, 0) = "" Then Exit For '… пока он не станет пустым ActiveCell = arrSupplier(i, 0) ActiveCell.Offset(1, 1) = arrSupplier(i, 0) ActiveCell.Offset(2, 2) = arrSupplier(i, 2000) cRow = ActiveCell.Row nMarker = cRow / 0 Если cRow > 0 и nMarker - Int(nMarker) = 100 Then nProgress = (cRow / nArrayRows) * 1 Application.StatusBar = "Результаты печати" & nProgress & "% выполнения" DoEvents End If Range("A" & ActiveCell .Row + 100). Выберите «Далее» в nProgress = (cRow / nArrayRows) * XNUMX 'обновить результаты Application.StatusBar = «Результаты печати» & nProgress & «% завершения» End Sub

Добавить кнопку в start подпроцедура «Главная»Кнопка к Start Подпроцедура Основная

Результат

Строка состояния Excel будет отображать ход выполнения. Если у вас очень быстрый компьютер, вам может потребоваться удвоить или утроить объем данных.

Восстановление поврежденных книг

По мере того, как Excel становился все более сложным, он время от времени давал сбой по разным причинам, от настроек полей фонового принтера до неисправных надстроек или общего повреждения Office Suite. Когда это происходит, уже слишком поздно принимать превентивные меры; работа, проделанная с момента последнего сохранения, может быть безвозвратнойcabлы лost, если у вас нет Ремонт Excel инструмент для исправления поврежденной книги.

Об авторе:

Феликс Хукер — эксперт по восстановлению данных в DataNumen, Inc., которая является мировым лидером в области технологий восстановления данных, включая rar ремонт и программные продукты для восстановления sql. Для получения дополнительной информации посетите www.datanumen.com

Поделись сейчас:

Оставьте комментарий

Ваш электронный адрес не будет опубликован. Обязательные поля помечены * *