• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Cells(x,y).value wijzigen

Status
Niet open voor verdere reacties.

Hans Gorter

Gebruiker
Lid geworden
27 okt 2008
Berichten
97
If Cells(x, y).Value <> 0 Then
'Cells(x, y).Value = "!"
y = 7
End If

Als ik in bovenstaande code het commentaarteken bij regel 2 weghaal, wordt het prg heel traag. Nou begrijp ik best dat er iets moet gebeuren als je de celinhoud verandert, maareuh... het wordt echt heel traag. Iemand een alternatief?

Vast dank!
 
van een waarde veranderen zou excel normaal gesproken niet zo traag moeten worden. Of maakt dit onderdeel uit van een lus?

Wat in ieder geval de uitvoering van de code zal versnellen
Application.EnableEvents = False
Application.ScreenUpdating = False

Aan het begin van de code plaatsen en het eind weer op true zetten

mvg leo
 
Laatst bewerkt:
Allereerst dank voor je reactie.

Het maakt inderdaad deel uit van een lus.
Screenupdating had ik al False
Ga die events nu ook false maken.

Nogmaals dank!
 
Vooral ook de berekeningswijze op manueel zetten:

Code:
    Application.Calculation = xlCalculationManual
    
    'code
    
    Application.Calculation = xlCalculationAutomatic

Tevens, indien mogelijk, zo min mogelijk lezen en schrijven in een werkblad. Het is efficiënter om cellen te lezen, in een array in het geheugen te zetten, daarop bewerkingen te doen, en dan de hele array naar het blad wegschrijven. Zie codes in andere posts van helper Snb.

Wigi
 
Laatst bewerkt:
Wat zijn de grenzen van x en y? Vermoedelijk zijn deze heel ruim waardoor je een groot aantal cellen gaat evalueren, wat de nodige tijd kost?

Is het een gewone sub of wordt de code aangeroepen in een event? Indien dan laatste: welk event?
 
Weer dank voor je reactie, heb je advies overgenomen. Die arrays is me duidelijk maar brand ik mijn handen nog niet aan. Het venijn zit hem alleen in het einde regeltje, de rest gaat razendsnel.

Dank en je hoort nog of de 4e juli door kan gaan!

Groeten,
Hans
 
Het is een gewone sub, gewoon aanklikken van een knop (vergeef me als ik nu iets verwar, ik ben pas een paar weken in VBA bezig).
X en Y zijn zo'n 30 en 50, lijkt me helemaal niet veel.

Ik zoek op een rij (=tijdlijn) van rechts naar links naar de eerste niet lege cel. Als ik die gevonden heb, moet die leeg worden gemaakt en de waarde één of twee kolommen worden opgeschoven. Sommige kolommen zijn geblokkeerd (=vakantieweken). Het werkt als een speer als ik maar niets met die Cell(x,y).value. Maar ja...:confused:

Dank voor je meedenken!
 
Vooral ook de berekeningswijze op manueel zetten:

Application.Calculation = xlCalculationManual



Dit was dus de oplossing, dank je wel!
 
Mooi dat het opgelost is en goed dat je het nog even hebt laten weten
mvg leo
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan