Refresh Excel VBA Function Resultate
-
08-06-2019 - |
Vra
Is daar iemand weet hoe ek kan kry 'n gebruiker-gedefinieerde funksie te herevalueer self (wat gebaseer is op verander data in die sigblad)? Ek het F9 en Shift + F9 , maar diegene doen nie probeer werk. Die enigste ding wat blyk te werk is die wysiging van die sel met die funksie oproep en dan druk Enter. Enige idees? Ek herinner my in staat is om dit te doen ...
Oplossing
Jy moet Application.Volatile
gebruik in die top van jou funksie:
Function doubleMe(d)
Application.Volatile
doubleMe = d * 2
End Function
Dit sal dan herevalueer wanneer die werkboek veranderinge (as jou berekening is ingestel op outomatiese).
Ander wenke
Sommige meer inligting oor die F9 kortpadsleutels vir berekening in Excel
- F9 rekent al werkkaarte in alle oop werkboeke
- Shift + F9 rekent die aktiewe werkblad
- Ctrl + Alt + F9 rekent al werkkaarte in alle oop werkboeke (Full herberekening)
- Shift + Ctrl + Alt + F9 Herbouwt die afhanklikheid boom en doen 'n volledige herberekening
Goed, het gevind dat hierdie een myself. Jy kan gebruik Ctrl + Alt + F9 om dit te bewerkstellig.
As jy alle verwysings na die sigblad data in die UDF parameter lys sluit, sal Excel jou funksie herbereken wanneer die verwysde data veranderinge:
Public Function doubleMe(d As Variant)
doubleMe = d * 2
End Function
Jy kan ook gebruik Application.Volatile
, maar dit het die nadeel van die maak van jou UDF altyd herbereken -. Selfs wanneer dit nie nodig het om omdat die verwysde data nie verander
Public Function doubleMe()
Application.Volatile
doubleMe = Worksheets("Fred").Range("A1") * 2
End Function
Om oor te skakel na outomatiese:
Application.Calculation = xlCalculationAutomatic
Om te wissel na Handleiding:
Application.Calculation = xlCalculationManual
Die Application.Volatile
nie werk vir herbereken 'n formule met my eie funksie binne. Ek gebruik die volgende funksie:
Application.CalculateFull
Dit verfris die berekening beter as Range(A:B).Calculate
:
Public Sub UpdateMyFunctions()
Dim myRange As Range
Dim rng As Range
' Assume the functions are in this range A1:B10.
Set myRange = ActiveSheet.Range("A1:B10")
For Each rng In myRange
rng.Formula = rng.Formula
Next
End Sub
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