如何使用户定义函数基于电子表格中更改的数据重新评估自身?
我尝试使用F9和Shift+F9。
唯一有效的方法似乎是编辑调用函数的单元格,然后按Enter键。
如何使用户定义函数基于电子表格中更改的数据重新评估自身?
我尝试使用F9和Shift+F9。
唯一有效的方法似乎是编辑调用函数的单元格,然后按Enter键。
在您的函数顶部应使用Application.Volatile
:
Function doubleMe(d)
Application.Volatile
doubleMe = d * 2
End Function
它将在工作簿更改时重新评估(如果您的计算设置为自动)。关于Excel中用于计算的F9键盘快捷键的更多信息
好的,我自己找到了这个方法。你可以使用Ctrl+Alt+F9来完成这个操作。
Application.Volatile
方法是在 Office 2010 中添加的。 - I say Reinstate Monica如果您在UDF参数列表中包含了对电子表格数据的所有引用,那么每当所引用的数据发生变化时,Excel都会重新计算您的函数:
Public Function doubleMe(d As Variant)
doubleMe = d * 2
End Function
你也可以使用Application.Volatile
,但这样做的缺点是使你的UDF始终重新计算 - 即使引用的数据没有改变。
Public Function doubleMe()
Application.Volatile
doubleMe = Worksheets("Fred").Range("A1") * 2
End Function
要切换到自动模式:
Application.Calculation = xlCalculationAutomatic
切换到手动模式:
Application.Calculation = xlCalculationManual
这比使用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
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("F3")) Is Nothing Then
Application.CalculateFull
End If
End Sub
Application.Volatile
无法重新计算包含自定义函数的公式。我使用以下函数:Application.CalculateFull
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
Application.Volatile True
。 - mdm