Help!

PC-Problemen?
De vrijwilligers van Oplossing.be zoeken gratis met u mee!

Hulp bij posten

Recente topics

Auteur Topic: Flikkerend beeld in Excel  (gelezen 6345 keer)

0 leden en 1 gast bekijken dit topic.

Offline EricV

  • Volledig lid
  • **
  • Berichten: 138
  • Oplossing.be
Flikkerend beeld in Excel
« Gepost op: 28 augustus 2006, 11:45:39 »
Goedemorgen,

Ik heb een macro met daarin uitsluitend een aantal kleinere macro's. (ong. 30).
In deze macro en ook in alle kleine macro's heb ik in het begin de regels staan:
  Application.ScreenUpdating = False
  Application.EnableEvents = False
Aan het eind van deze macro en ook in de kleine macro's heb ik staan:
  Application.EnableEvents = True
  Application.ScreenUpdatin = True

Ondanks dit krijg ik bij de uitvoering van de (hoofd)macro steeds een heel snel knipperend beeld te zien totdat de macro klaar is.

Weet er iemand of ik dit kan voorkomen en hoe ?
Ik heb nl. altijd gedacht dat de regels zoals boven ervoor bedoeld zijn dat het beeld stil blijft staan.
Wat doen deze regels dan eigenlijk wel ?
Ik ben een complete leek op het gebied van VBA, vandaar.

Ik ben benieuwd naar jullie reacties.

Alvast bedankt.

Eric
Gelieve uw systeemgegevens in te vullen. Klik HIER voor meer informatie.

Offline SoftAid

  • Administrator
  • Ambassadeur
  • *****
  • Berichten: 20.191
  • Geslacht: Man
  • Nobody is perfect, not even me...
Re:Flikkerend beeld in Excel
« Reactie #1 Gepost op: 28 augustus 2006, 12:17:23 »
Hallo Eric,

het lijkt me logisch dat telkens je bij elke macro je beeld update, je 30 flikkeringen in je beeld gaat krijgen.

Ik zou enkel bij de eerste macro:

Application.ScreenUpdating = False
Application.EnableEvents = False

laten staan, en bij de laatste:

Application.EnableEvents = True
Application.ScreenUpdatin = True

Het hangt er natuurlijk vanaf hoe je macro's zijn opgebouwd en of ze in een bepaalde volgorde worden afgespeeld.

Zo zal de laatste in de rij niet noodzakelijk ook de laatste macro zijn die wordt uitgevoerd 8) . Dat is iets wat jij alleen weet.

Als je wilt kan je het excel-bestand op de site zetten, dan kunnen de specialisten (waar ik niet bij hoor) het even bekijken.

:) SoftAid :)





Maximum grootte bijlagen vergroot naar 4 MB
Dubbelposten, het posten op verschillende forums van dezelfde vraag, dient op
voorhand gemeld te worden, met een link naar het topic op de andere site.
Overtreding van deze regel kan bestraft worden met verbanning !

Offline LucHeyndrick

  • Volledig lid
  • **
  • Berichten: 217
  • Oplossing.be
Re:Flikkerend beeld in Excel
« Reactie #2 Gepost op: 29 augustus 2006, 17:42:18 »
Sub GlobaleMacro()
Application.ScreenUpdating = False
'Macro1
'Marco2
'Marco3
End Sub

ScreenUpdating terug op True zetten is eigenlijk niet meer nodig.
Bedenk echter dat die ScreenUpdating slechts een doekje is voor het bloeden.
Je krijgt dat flikkeren, omdat je hoofdzakelijk de macrorecorder gebruikt.  Je zou alle select; Selection en Activate moeten vermijden.  Dan heb je ook geen flikkering meer, en een vééééééél snellere macro.
Application.ScreenUpdating kan je dan uiteraard nog steeds gebruiken.

Luc
Gelieve uw systeemgegevens in te vullen. Klik HIER voor meer informatie.

Offline EricV

  • Volledig lid
  • **
  • Berichten: 138
  • Oplossing.be
Re:Flikkerend beeld in Excel
« Reactie #3 Gepost op: 29 augustus 2006, 19:31:01 »
Luc,

Als ik select, selection en activate moet vermijden hoe doe ik dat dan ?  Wat komt er dan voor in de plaats.
Kun je misschien een voorbeeld meesturen, dan ik is het hopelijk wat duidelijker.

Bedankt bij voorbaat

Eric
Gelieve uw systeemgegevens in te vullen. Klik HIER voor meer informatie.

Offline LucHeyndrick

  • Volledig lid
  • **
  • Berichten: 217
  • Oplossing.be
Re:Flikkerend beeld in Excel
« Reactie #4 Gepost op: 29 augustus 2006, 20:29:03 »
Voorbeeld:
Code met Select:
Sheets("Blad1").Select
Range("A1").Select
Selection.Copy
Sheets("Blad2").Select
Range("A1").Select
Selection.Paste

(Even uit m'n hoofd getypt... kunnen dus syntaxisfouten in zitten.)

Code zonder Select:

Sheets("Blad1").Range("A1").Value = Sheets("Blad2").Range("A1").Value

Heb misschien wat overdreven met selections... maar de recorder maakt er echt zo'n soepje van.  Mijn code is trouwens ook veel duidelijker te lezen.

mvg,
Luc
Gelieve uw systeemgegevens in te vullen. Klik HIER voor meer informatie.

 


www.combell.com