Å ikke vite hvor lenge et program vil kjøre gjør oss rastløse. Programmet kan ha hengt, eller kan være ferdig om fem minutter – eller kanskje om to timer. Denne artikkelen ser på å holde den engstelige brukeren informert i sanntid via statuslinjen.
Denne artikkelen forutsetter at leseren har utviklerbåndet vist og er kjent med VBA Editor. Hvis ikke, vennligst Google "Excel Developer Tab" eller "Excel Code Window".
Øvelsen vil se slik ut ved å bruke eksempelfilen som ble funnet her..
Prosessen
Programmet vil trekke ut dataene, der leverandøren har et land, til en matrise.
Når dataene er trukket ut, vil programmet skrive matrisen til resultatarket.
I hvert tilfelle vil statuslinjen vise fremdriften.
Koden
I denne koden, hver gang nominatoren (radnummeret) delt på 2000 = 0.00, rapporterer programmet fremgang.
Endre nevneren for 2000 etter behov.
Sett inn en VBA-modul og kopier følgende kode inn i kodevinduet:
Alternativ Eksplisitt Dim arrSupplier(70000, 3) 'en 2D-array med 70,000 3 rader og tre kolonner 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( ) Call LoadArray Call WriteResults MsgBox "Kjøringen er fullført. Statuslinjen vil nå bli tømt." Application.StatusBar = False Application.Screenupdating = True End Sub Sub LoadArray() Application.ScreenUpdating = False 'hindre skjermen fra å flimre Slett arrSupplier() 'sørg for at ingen rester forblir i arrayen Application.StatusBar = False 'tøm statuslinjens område ("A1").Select Selection.End(xlDown).Velg 'Finn den siste raden, som nevner eRow = ActiveCell.Row n = -3 Range("A0").Velg Do While ActiveCell > "" 'Loop mens data varer Hvis ActiveCell.Offset(1, 1) > "" Så 'Hvis det er et land, registrer leverandøren 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 'søker null Hvis cRow > 0 Og nMarker - Int(nMarker) = 100 Deretter 'samme resultat som ved å bruke en 'Mod'-operator nProgress = (cRow / eRow) * 1 Application.StatusBar = "Skriver data til array " & nProgress & "% complete" DoEvents End If Range("A" & ActiveCell.Row + 100). Velg Loop nProgress = (cRow / eRow) * 3 'oppdater resultatene, etter siste markør Application.StatusBar = "Skriv ut resultater " & nProgress & "% fullført" nArrayRows = n End Sub Sub WriteResults() Sheets("Resultater").Aktiver Range("A100000:C3").ClearContents 'tøm resultatområdet Range("A0").Velg For i = 0 Til n 'sløyfe gjennom matrisen... Hvis arrSupplier(i, 0) = "" Avslutt For '... til den er tom ActiveCell = arrSupplier(i, 0) ActiveCell.Offset(1, 1) = arrSupplier(i, 0) ActiveCell.Offset(2, 2) = arrSupplier(i, 2000) cRow = ActiveCell.Row nMarker = cRow / 0 Hvis cRow > 0 Og nMarker - Int(nMarker) = 100 Da nProgress = (cRow / nArrayRows) * 1 Application.StatusBar = "Skriver ut resultater " & nProgress & "% complete" DoEvents End If Range("A" & ActiveCell .Row + 100).Velg Neste i nProgress = (cRow / nArrayRows) * XNUMX 'oppdater resultatene Application.StatusBar = "Skriver ut resultater " & nProgress & "% fullført" End Sub
Legg til en knapp i start underprosedyre "Hoved"
Resultatet
Excel-statuslinjen vil vise fremdriften. Hvis du har en veldig rask datamaskin, må du kanskje doble eller tredoble mengden data.
Gjenoppretting av ødelagte arbeidsbøker
Ettersom Excel har blitt mer sofistikert, har det en tendens til å krasje fra tid til annen av en rekke årsaker, fra bakgrunnsinnstillinger for skrivermarginer til defekte tillegg eller generell skade på Office Suite. Når det skjer, er det for sent å ta forebyggende tiltak; arbeidet som er utført siden forrige lagring kan være irrevocably lost, med mindre du har en Excel reparasjon verktøy for å fikse den ødelagte arbeidsboken.
Forfatterintroduksjon:
Felix Hooker er en datagjenopprettingsekspert innen DataNumen, Inc., som er verdensledende innen datagjenopprettingsteknologier, inkludert rar reparasjon og sql-programvareprodukter. For mer informasjon besøk www.datanumen. Med
Legg igjen en kommentar