スプレッドシートの変更されたデータに基づいて自分自身を再評価するユーザー定義関数を取得するにはどうすればよいですか?
+を試しF9てみました。ShiftF9
動作しているように見える唯一のことは、関数呼び出しでセルを編集してから、Enterキーを押すことです。
スプレッドシートの変更されたデータに基づいて自分自身を再評価するユーザー定義関数を取得するにはどうすればよいですか?
+を試しF9てみました。ShiftF9
動作しているように見える唯一のことは、関数呼び出しでセルを編集してから、Enterキーを押すことです。
Application.Volatile
関数の先頭で使用する必要があります。
Function doubleMe(d)
Application.Volatile
doubleMe = d * 2
End Function
その後、ワークブックが変更されるたびに再評価されます (計算が自動に設定されている場合)。
Excel で計算するための F9 キーボード ショートカットに関する詳細情報
さて、これを自分で見つけました。Ctrl++を使用してこれを実現できAltますF9。
スプレッドシートデータへのすべての参照をUDFパラメータリストに含めると、参照されたデータが変更されるたびにExcelが関数を再計算します。
Public Function doubleMe(d As Variant)
doubleMe = d * 2
End Function
を使用することもできますApplication.Volatile
が、これには、参照データが変更されていないためにUDFを再計算する必要がない場合でも、UDFを常に再計算するという欠点があります。
Public Function doubleMe()
Application.Volatile
doubleMe = Worksheets("Fred").Range("A1") * 2
End Function
これは よりも計算をリフレッシュします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