Alternativt kan du jo også bare skrive til Statuslinjen, fx: For i = 1 To 10 For a = 1 To 5000000 Next ' Skriver til statuslinje StatusBar = i DoEvents Next i
Ifølge VBA-hjælpen er StatusBar ikke længere supporteret i VBA (gælder 2007 og 2010). Fra VBA hjælpen i 2007 og 2010: StatusBar Property This property is no longer supported in Microsoft Word Visual Basic for Applications.
Så vidt jeg kan se, fejler det ikke, men informationen bliver ikke som i 2003 og tidligere med sikkerhed stående. Andre handlinger vil ofte få Words indbyggede statuslinjeinformation til at dukke op igen og overskrive teksten, og så kommer det blot til at flimre med skiftende tekst.
Nedenfor har jeg indsat kode, som måske bedre kan vise, hvad du kan gøre. Som MsgBox-teksterne siger, så indsæt i din kode det, der skal ske. I stedet for at indsætte al kode i din UserForm, er det bedre at lave kald til separate makroer, som du har placeret i et eller flere moduler i dit projekt. Du er nødt til at have koden afviklet i "bidder" og lægge noget til bredden af Label1 for hver "bid" for at kunne bruge progress-baren. I eksemplet her har jeg opdelt Label1 sådan, at 1/8 af den fulde længde lægges til hver gang. Du kan opdele efter behov og lade intervallerne være forskellige, så de bedst afspejler den tid, de forskellige dele tager at afvikle. Hvis forløbet skal se nogenlunde jævnt ud, skal du lave mange opdelinger.
Prøv at udskifte koden i UserForm1 med følgende. Behold makroen TestProgress og selve UserForm1 med Frame1 og Label1 uændret. Kør derefter makroen TestProgress, så du kan se, hvordan baren vokser:
Option Explicit
Me.Repaint
MsgBox "Indsæt 1. del af handlingen i koden i stedet for denne MsgBox" Label1.Width = 25 Frame1.Repaint
MsgBox "Indsæt 2. del af handlingen i koden i stedet for denne MsgBox" Label1.Width = 50 Frame1.Repaint
MsgBox "Indsæt 3. del af handlingen i koden i stedet for denne MsgBox" Label1.Width = 75 Frame1.Repaint
MsgBox "Indsæt 4. del af handlingen i koden i stedet for denne MsgBox" Label1.Width = 100 Frame1.Repaint
MsgBox "Indsæt 5. del af handlingen i koden i stedet for denne MsgBox" Label1.Width = 125 Frame1.Repaint
MsgBox "Indsæt 6. del af handlingen i koden i stedet for denne MsgBox" Label1.Width = 150 Frame1.Repaint
MsgBox "Indsæt 7. del af handlingen i koden i stedet for denne MsgBox" Label1.Width = 175 Frame1.Repaint
MsgBox "Indsæt 8. del af handlingen i koden i stedet for denne MsgBox" Label1.Width = 200 Frame1.Repaint
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.