Ak nevieme, ako dlho bude program trvať, urobíme to nepokojným. Program mohol visieť alebo sa mohol skončiť o päť minút - alebo možno o dve hodiny. Tento článok sa zameriava na priebežné informovanie znepokojeného používateľa v reálnom čase cez stavový riadok.
Tento článok predpokladá, že čitateľ má zobrazenú pásku pre vývojárov a je oboznámený s editorom VBA. Ak nie, navštívte Google kartu „Vývojár Excel“ alebo „Okno kódu Excel“.
Cvičenie bude vyzerať takto, pomocou nájdeného príkladu súboru tu.
Proces
Program extrahuje údaje, ak má dodávateľ krajinu, do poľa.
Po extrakcii údajov program zapíše pole do hárku s výsledkami.
V obidvoch prípadoch bude stavový riadok ukazovať postup.
Kódex
V tomto kóde program zakaždým, keď je nominátor (číslo riadku) vydelený hodnotou 2000 = 0.00, program informuje o pokroku.
Podľa potreby upravte menovateľa roku 2000.
Vložte modul VBA a skopírujte nasledujúci kód do okna kódu:
Možnosť Explicit Dim arrSupplier (70000, 3) 'a 2D array of 70,000 lines and three columns 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 ( ) Zavolajte LoadArray Zavolajte WriteResults MsgBox "Spustenie je dokončené. Stavový riadok bude teraz vymazaný." Application.StatusBar = False Application.Screenupdating = True End Sub Sub LoadArray () Application.ScreenUpdating = False 'zabráni blikaniu obrazovky Vymazať arrSupplier ()' zabezpečí, aby v poli Application nezostali zvyšky. StatusBar = False 'vyčistí rozsah stavového riadku ("A3"). Vyberte Selection.End (xlDown). Vyberte 'Vyhľadať posledný riadok ako menovateľ eRow = ActiveCell.Row n = -1 Rozsah ("A3"). Vyberte Vykonať pri funkcii ActiveCell> ""' Smyčkovať údaje trvá If ActiveCell.Offset (0, 1)> "" Potom 'Ak existuje krajina, zaznamenajte dodávateľa n = n + 1 arrSupplier (n, 0) = ActiveCell arrSupplier (n, 1) = ActiveCell.Offset (0, 1) arrSupplier (n, 2) = ActiveCell.Offset (0, 2) Koniec Ak cRow = ActiveCell.Row nMarker = cRow / 2000 'hľadanie nuly Ak cRow> 0 A nMarker - Int (nMarker) = 0 Potom' rovnaký výsledok ako pomocou operátora „Mod“ nProgress = (cRow / eRow) * 100 Application.StatusBar = "Zápis údajov do poľa" & nProgress & "% complete" DoEvents End If Range ("A" & ActiveCell.Row + 1). Vyberte slučku nProgress = (cRow /eRow) * 100 'aktualizuje výsledky po poslednej značke Application.StatusBar = "Výsledky tlače" & nProgress & "% dokončené" nArrayRows = n End Sub Sub WriteResults () hárky ("Výsledky"). Aktivovať rozsah ("A3: C100000 "). ClearContents 'vymaže oblasť s výsledkami Rozsah (" A3 "). Vyberte Pre i = 0 Do n' slučky cez pole ... Ak arrSupplier (i, 0) =" "Potom ukončite pre '..., kým nebude prázdny ActiveCell = arrSupplier (i, 0) ActiveCell.Offset (0, 1) = arrSupplier (i, 1) ActiveCell.Offset (0, 2) = arrSupplier (i, 2) cRow = ActiveCell.Row nMarker = cRow / 2000 Ak cRow> 0 A nMarker - Int (nMarker) = 0 Potom nProgress = (cRow / nArrayRows) * 100 Application.StatusBar = "Výsledky tlače" & nProgress & "% dokončené" DoEvents End If Range ("A" & ActiveCell.Row + 1) .Vyberte Ďalej i nProgress = (cRow / nArrayRows) * 100 'aktualizujte výsledky Application.StatusBar = "Výsledky tlače" & nProgress & "% dokončené" End Sub
Pridajte tlačidlo do start čiastkový postup „Hlavný“
Výsledok
Stavový riadok programu Excel bude zobrazovať priebeh. Ak máte veľmi rýchly počítač, možno budete musieť zdvojnásobiť alebo strojnásobiť množstvo dát.
Obnova poškodených zošitov
Pretože je program Excel čoraz sofistikovanejší, má tendenciu občas zlyhávať z rôznych dôvodov, od nastavenia okrajov tlačiarne na pozadí až po chybné doplnky alebo všeobecné poškodenie balíka Office. Ak sa to stane, je príliš neskoro na prijatie preventívnych opatrení; práca od posledného uloženia môže byť irevocably lost, pokiaľ nemáte Excel oprava nástroj na opravu poškodeného zošita.
Úvod autora:
Felix Hooker je expert na obnovu dát v DataNumen, Inc., ktorá je svetovým lídrom v oblasti technológií obnovy dát, vrátane rar oprava a softvérové produkty na obnovenie sql. Pre viac informácií navštívte www.datanumen. S
Nechaj odpoveď