Å få Excel til å oppdatere data på arket innenfra VBA

stemmer
42

Hvordan får du regnearkdata i Excel til å beregne seg innenfra VBA, uten Kluge for bare å endre en celleverdi?

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


7 svar

stemmer
51

Følgende linjer vil gjøre susen:

ActiveSheet.EnableCalculation = False  
ActiveSheet.EnableCalculation = True  

Edit: Den .Calculate () metoden vil ikke fungere for alle funksjoner, jeg testet den på et ark med tillegget i array funksjoner. Produksjonen ark jeg bruker er komplisert nok jeg ikke ønsker å prøve og teste .CalculateFull () -metoden, så det kan fungere.

Svarte 30/09/2008 kl. 16:54
kilden bruker

stemmer
15

Dette bør gjøre susen ...

'recalculate all open workbooks
Application.Calculate

'recalculate a specific worksheet
Worksheets(1).Calculate

' recalculate a specific range
Worksheets(1).Columns(1).Calculate
Svarte 30/09/2008 kl. 17:26
kilden bruker

stemmer
4

Du kan også prøve

Application.CalculateFull

eller

Application.CalculateFullRebuild

Hvis du ikke har noe imot å gjenoppbygge alle åpne arbeidsbøker, snarere enn bare det aktive regnearket. ( CalculateFullRebuildGjenoppbygger avhengigheter i tillegg.)

Svarte 30/09/2008 kl. 17:52
kilden bruker

stemmer
7

Noen ganger vil Excel hikke og trenger en kick-start på nytt en ligning. Dette skjer i noen tilfeller når du bruker egendefinerte formler.

Sørg for at du har følgende skript

ActiveSheet.EnableCalculation = True

Påfør ligningen av valget.

Cells(RowA,ColB).Formula = Cells(RowA,ColB).Formula

Dette kan deretter løkker etter behov.

Svarte 04/09/2013 kl. 17:11
kilden bruker

stemmer
2

Jeg hadde et problem med å slå av et bakgrunnsbilde (et utkast vannmerke) i VBA. Min endringen ble ikke dukke opp (som ble utført med den Sheets(1).PageSetup.CenterHeader = ""metoden) - så jeg trengte en måte å oppdatere. Den ActiveSheet.EnableCalculationtilnærmingen delvis gjorde utslaget, men ikke dekke ubrukte celler.

Til slutt fant jeg det jeg trengte med en liner som gjorde bildet forsvinne når det ikke lenger ble satt: -

Application.ScreenUpdating = True

Svarte 02/12/2014 kl. 15:28
kilden bruker

stemmer
0

Etter en datatilkobling oppdatering ble noen UDF oss ikke utfører. Ved hjelp av en subrutine, var jeg prøver å recalcuate en enkelt kolonne med:

Sheets("mysheet").Columns("D").Calculate

Men ovennevnte uttalelse hadde ingen effekt. Ingen av løsningene ovenfor hjalp, bortsett kambeeks forslag for å erstatte formler arbeidet, og var rask hvis manuell Recalc slått på under oppdatering. Nedenfor kode løste problemet mitt, selv om ikke akkurat ansvarlig for OP "Kluge" kommentar, det ga en rask / pålitelig løsning for å tvinge beregning av brukerdefinerte celler.

Application.Calculation = xlManual
DoEvents
For Each mycell In Sheets("mysheet").Range("D9:D750").Cells
    mycell.Formula = mycell.Formula
Next
DoEvents
Application.Calculation = xlAutomatic
Svarte 25/06/2019 kl. 00:28
kilden bruker

stemmer
0

Advarsel. PGHCPA nest kode forslag i det siste innlegget, fjernet alle celleformater. I alle fall på min regneark.

Ha en fin dag

Svarte 27/10/2019 kl. 14:07
kilden bruker

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