Hvordan hindrer Excel fra renderegnearket som min makro beregner det?

stemmer
6

Mine makrooppdateringer et stort regneark med tall, men det går veldig sakte som excel er gjengivelse resultatet som det beregner det. Hvordan stopper jeg utmerke seg fra å gjengi utgang til makro er fullført?

Publisert på 27/09/2008 klokken 16:01
kilden bruker
På andre språk...                            


5 svar

stemmer
0

Du kan slå av automatisk beregning i dialogboksen alternativer, det setter det slik at det bare beregner når du trykker på F9.

Svarte 27/09/2008 kl. 16:03
kilden bruker

stemmer
2

Application.ScreenUpdating = False

Og selvfølgelig sette det tilbake til True igjen når du er ferdig, selv om en feil er hevet. Eksempel:

Public Sub MyMacro
    On Error GoTo ErrHandler
    Application.ScreenUpdating = False
    ... do my stuff that might raise an error
    Application.ScreenUpdating = True
    Exit Sub
ErrHandler:
    Application.ScreenUpdating = True
    ... Do something with the error, e.g. MsgBox       
End Sub
Svarte 27/09/2008 kl. 16:05
kilden bruker

stemmer
14

Jeg bruker begge de foreslåtte løsningene:

Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
...
...
...
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
Svarte 27/09/2008 kl. 16:11
kilden bruker

stemmer
1

Bygge på Joe og seer (dette bruker gamle syntaks, så det er kompatibel med VBA av Office 2000):

On Error Goto AfterCalculation
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
...

AfterCalculation:
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
Svarte 27/09/2008 kl. 16:49
kilden bruker

stemmer
2

Jeg foretrekker også å bruke begge de foreslåtte løsninger, men også å holde brukerne forrige beregning modus.

For denne applikasjonen kan dette være noen stor sak, men det er vanligvis best praksis å la brukerne har sine innstillinger gjenopprettet etter at prosedyren er ferdig:

Application.ScreenUpdating = False
PreviousCalcMode = Application.Calculation
Application.Calculation = xlCalculationManual
   ...  
   ...
   ...
Application.Calculation = PreviousCalcMode
Application.ScreenUpdating = True

NB. Det ville også være verdt din tid til å sette inn noen feilhåndtering som slår på Application.ScreenUpdating bør en feil oppstår i din ellers strålende koden;) Hvis minnet serverer meg rett, vil Excel ikke viser noen feilmeldinger osv når ScreenUpdating = false. Noe sånt som dette:

Sub DoSomeThing


On Error Goto DisplayError

Application.ScreenUpdating = False
PreviousCalcMode = Application.Calculation
Application.Calculation = xlCalculationManual
   ...  
   ...
   ...
Application.Calculation = PreviousCalcMode
Application.ScreenUpdating = True

Exit Sub

DisplayError:
Application.Calculation = PreviousCalcMode
Application.ScreenUpdating = True

MsgBox Err.Description
End 'This stops execution of macro, in some macros this might not be what you want'
    '(i.e you might want to close files etc)'
End Sub
Svarte 16/01/2009 kl. 22:30
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more