Kan jeg i en word makro lave en rutine / opdatering af skærmbilledet? jeg har en makro, så løber i en løkke fra 1 til mange. Jeg laver en tabel på 10.000 rækker og lader min løkke fjerne de rækker der er tomme. De første 5-6 rækker fjerne den og opdaterer skærmbilledet, men herefter arbejder den bare og man har ingen ide om, hvor langt den er kommet (før den er færdig). Det ville være smukt, hvis man lavede en løkke der sagde for 1 to end slet række opdater skærmbillede næste
Det er måske ikke nødvendigt at opdatere for hver række. Jo flere opdateringer, jo længere tid tager det at afvikle koden. Du kan udnytte Mod operator til kun af gennemføre opdateringen efter et vist antal rækker/med et vist interval. Hvis du f.eks. i løkken, der kalder sletning af rækker, bruger en tæller (her blot en variabel med navnet n), kan du et passende sted i løkken indsætte kode:
If n Mod 10 = 0 Then Application.ScreenRefresh End If
Koden virker sådan: Hvis n divideret med 10 giver en rest på 0, vil Application.ScreenRefresh blive udført og dermed opdatere skærmen. Skærmen bliver dermed kun opdateret, hver gang n er ændret med 10. Udskift 10 med en passende værdi.
Måske du har brug for at slå skærmopdatering til også, hvis den er slået fra – du må prøve dig frem:
If n Mod 10 = 0 Then With Application .ScreenUpdating = True .ScreenRefresh .ScreenUpdating = False End With End If
Måske du også har brug for at indsætte kode, som flytter markøren til passende sted i dokumentet ved hver opdatering af skærmen. Jo flere ting, du føjer til, og jo flere skærmopdateringer, der laves, jo længere tid vil koden tage om at blive afviklet.
Du kan godt placere opdateringskoden i f.eks. en separat, generel function, som du kalder fra løkken. Eksempel – her er både Mod-værdien og den aktuelle tæller brugt som parametre.
Function fncRefreshScreen(intMod As Integer, intCount As Integer) 'intMod: how often to refresh 'intCount: the actual counter value to check If intCount Mod intMod = 0 Then With Application .ScreenUpdating = True .ScreenRefresh .ScreenUpdating = False End With End If End Function
Så kan du kalde din function på en af følgende måder:
Call fncRefreshScreen(10, n) eller fncRefreshScreen 10, n
Bemærk: Hvis du bruger Call, skal parameterværdierne i parentes.
Synes godt om
Ny brugerNybegynder
Din løsning...
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.