Refresh Excel VBA Funksjon resultater

stemmer
58

Vet noen hvordan jeg kan få en brukerdefinert funksjon for å re-evaluere seg selv (basert på endrede data i regnearket)? Jeg har prøvd F9og Shift+F9 , men de fungerer ikke. Det eneste som ser ut til å fungere er å redigere cellen med funksjonen samtalen og deretter trykke Enter. Noen ideer? Jeg synes å huske å være i stand til å gjøre dette ...

Publisert på 14/08/2008 klokken 11:54
kilden bruker
På andre språk...                            


9 svar

stemmer
13

Ok, fant denne selv. Du kan bruke Ctrl+ Alt+ F9for å oppnå dette.

Svarte 14/08/2008 kl. 11:59
kilden bruker

stemmer
99

Du bør bruke Application.Volatilei toppen av funksjon:

Function doubleMe(d)
    Application.Volatile
    doubleMe = d * 2
End Function

Det vil da revurdere når arbeidsboken endringene (hvis regnestykket er satt til automatisk).

Svarte 15/08/2008 kl. 04:18
kilden bruker

stemmer
31

Litt mer informasjon om de F9 hurtigtaster for beregning i Excel

  • F9 Beregner alle regnearkene i alle åpne arbeidsbøker
  • Shift+ F9 Beregner det aktive regnearket
  • Ctrl+ Alt+ F9 Beregner alle regnearkene i alle åpne arbeidsbøker (Full beregnings)
  • Shift+ Ctrl+ Alt+ F9Bygger avhengigheten treet og gjør en full rekalkulering
Svarte 07/09/2008 kl. 14:11
kilden bruker

stemmer
9

Hvis du inkluderer alle referanser til regnearkdata i parameterlisten UDF Excel vil beregne din funksjon når refererte data endringer:


    Public Function doubleMe(d as variant)
    doubleMe=d*2
    end Function

Du kan også bruke Application.Volatile, men dette har den ulempen av å gjøre UDF alltid beregne, selv når det ikke trenger å fordi den refererte data ikke er endret.


    Public Function doubleMe()
    Application.Volatile
    doubleMe=Worksheets("Fred").Range("A1")*2
    end Function

Svarte 23/09/2008 kl. 09:12
kilden bruker

stemmer
-1
Public Sub UpdateMyFunctions()
    Dim myRange As Range
    Dim rng As Range

    'Considering The Functions are in Range A1:B10
    Set myRange = ActiveSheet.Range("A1:B10")

    For Each rng In myRange
        rng.Formula = rng.Formula
    Next
End Sub
Svarte 22/10/2014 kl. 10:01
kilden bruker

stemmer
1

For å bytte til Automatisk:

Application.Calculation = xlCalculationAutomatic    

For å bytte til Manual:

Application.Calculation = xlCalculationManual    
Svarte 03/12/2014 kl. 17:22
kilden bruker

stemmer
1

Det fungerer vel dette en for å oppdatere beregningen bedre enn Range (A: B) .Calculate

Public Sub UpdateMyFunctions()
Dim myRange As Range
Dim rng As Range

'Considering The Functions are in Range A1:B10
Set myRange = ActiveSheet.Range("A1:B10")

For Each rng In myRange
    rng.Formula = rng.Formula
Next
End Sub
Svarte 09/06/2015 kl. 23:29
kilden bruker

stemmer
-2

Det Application.Volatilefungerer ikke for omberegning en formel med min egen funksjon inne. Jeg bruker følgende funksjon: Application.CalculateFull

Svarte 21/11/2017 kl. 06:20
kilden bruker

stemmer
1

Jeg fant det best å bare oppdatere beregningen når en bestemt celle endres. Her er et eksempel VBA-kode for å plassere i "regneark" "Change" event:

Private Sub Worksheet_Change(ByVal Target As Range)
  If Not Intersect(Target, Range("F3")) Is Nothing Then
    Application.CalculateFull
  End If
End Sub
Svarte 13/09/2019 kl. 22:17
kilden bruker

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