Cum să afișați progresul pe bara de stare a Excel

A nu ști cât timp va rula un program ne face neliniștiți. Este posibil ca programul să se fi blocat sau să se termine în cinci minute – sau poate în două ore. Acest articol se referă la menținerea utilizatorului anxios informat în timp real prin bara de stare.

Acest articol presupune că cititorul are afișată panglica pentru dezvoltatori și este familiarizat cu Editorul VBA. Dacă nu, vă rugăm să Google „Fila Dezvoltator Excel” sau „Fereastra Cod Excel”.

Exercițiul va arăta astfel, folosind fișierul exemplu găsit aici.

Afișează progresul pe bara de stare

Procesul de

Programul va extrage datele, acolo unde Furnizorul are o țară, într-o matrice.

Odată ce datele au fost extrase, programul va scrie matricea în foaia de rezultate.

În fiecare caz, bara de stare va afișa progresul.

Codul

În acest cod, de fiecare dată când numitorul (numărul rândului) împărțit la 2000 = 0.00, programul raportează progresul.

Modificați numitorul lui 2000 după cum este necesar.

Introduceți un modul VBA și copiați următorul cod în fereastra de cod:

Opțiune Explicit Dim arrSupplier(70000, 3) „o matrice 2D de 70,000 de rânduri și trei coloane Dim eRow As Long Dim nProgress As Integer Dim Row As Long Dim nMarker As Single Dim nArrayRows As Long Dim n As Long Dim i Ca Long Sub Principal( ) Apelați LoadArray Apelați WriteResults MsgBox "Executarea este completă. Bara de stare va fi acum șters." Application.StatusBar = Fals Application.Screenupdating = True End Sub Sub LoadArray() Application.ScreenUpdating = Fals „preveniți pâlpâirea ecranului Erase arrSupplier() „asigurați-vă că nu rămân reziduuri în matrice Application.StatusBar = False „Ștergeți intervalul barei de stare” ("A3").Selectați Selection.End(xlDown).Selectați „Găsiți ultimul rând, ca numitor eRow = ActiveCell.Row n = -1 Range(„A3”).Selectați Do While ActiveCell > „" „Loop while data durează Dacă ActiveCell.Offset(0, 1) > "" Apoi „Dacă există o țară, înregistrați furnizorul n = n + 1 arrSupplier(n, 0) = ActiveCell arrSupplier(n, 1) = ActiveCell.Offset(0, 1) arrSupplier(n, 2) = ActiveCell.Offset(0, 2) End If cRow = ActiveCell.Row nMarker = cRow / 2000 'care caută zero Dacă cRow > 0 Și nMarker - Int(nMarker) = 0 Atunci este același rezultat ca folosind un operator „Mod” nProgress = (cRow / eRow) * 100 Application.StatusBar = „Scrierea datelor în matrice „ & nProgress & „% complete” DoEvents End If Range(„A” & ActiveCell.Row + 1).Selectați bucla nProgress = (cRow / eRow) * 100 'actualizează rezultatele, după ultimul marker Application.StatusBar = "Printing results " & nProgress & "% complete" nArrayRows = n End Sub Sub WriteResults() Sheets("Results").Activate Range("A3:C100000").ClearContents 'șterge zona rezultatelor Range("A3").Select For i = 0 To n 'circulează prin matrice... Dacă arrSupplier(i, 0) = "" Apoi Ieșire pentru '... până când este gol ActiveCell = arrSupplier(i, 0) ActiveCell.Offset(0, 1) = arrSupplier(i, 1) ActiveCell.Offset(0, 2) = arrSupplier(i, 2) cRow = ActiveCell.Row nMarker = cRow / 2000 If cRow > 0 And nMarker - Int(nMarker) = 0 Then nProgress = (cRow / nArrayRows) * 100 Application.StatusBar = "Printing results " & nProgress & "% complete" DoEvents End If Range("A" & ActiveCell) .Row + 1).Selectați Următorul i nProgress = (cRow / nArrayRows) * 100 'actualizează rezultatele Application.StatusBar = "Printing results" & nProgress & "% complete" End Sub

Adăugați un buton la start sub procedură „Principal”Butonul spre Start Subprocedură principală

Rezultatul

Bara de stare Excel va afișa progresul. Dacă aveți un computer foarte rapid, s-ar putea să fie nevoie să dublați sau să triplați cantitatea de date.

Recuperarea registrelor de lucru corupte

Pe măsură ce Excel a devenit mai sofisticat, tinde să se blocheze din când în când din mai multe motive, de la setările de margine a imprimantei de fundal la suplimente defecte sau deteriorarea generală a pachetului Office. Când se întâmplă, este prea târziu pentru a lua măsuri preventive; munca depusă de la ultima salvare ar putea fi irevocăcably lost, cu excepția cazului în care aveți un Reparatie Excel instrument pentru a remedia registrul de lucru corupt.

Introducerea autorului:

Felix Hooker este un expert în recuperarea datelor DataNumen, Inc., care este lider mondial în tehnologiile de recuperare a datelor, inclusiv rar repara și produse software de recuperare sql. Pentru mai multe informații vizitați www.datanumen.com

Lasă un comentariu

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate *