77

スプレッドシートの変更されたデータに基づいて自分自身を再評価するユーザー定義関数を取得するにはどうすればよいですか?

+を試しF9てみました。ShiftF9

動作しているように見える唯一のことは、関数呼び出しでセルを編集してから、Enterキーを押すことです。

4

9 に答える 9

132

Application.Volatile関数の先頭で使用する必要があります。

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

その後、ワークブックが変更されるたびに再評価されます (計算が自動に設定されている場合)。

于 2008-08-15T06:18:51.387 に答える
42

Excel で計算するための F9 キーボード ショートカットに関する詳細情報

  • F9 開いているすべてのワークブックのすべてのワークシートを再計算します
  • Shift+F9 アクティブなワークシートを再計算します
  • Ctrl+ Alt+F9 開いているすべてのワークブックのすべてのワークシートを再計算します (完全再計算)
  • Shift+ Ctrl+ Alt+F9依存関係ツリーを再構築し、完全な再計算を行います
于 2008-09-07T16:11:58.090 に答える
18

さて、これを自分で見つけました。Ctrl++を使用してこれを実現できAltますF9

于 2008-08-14T13:59:21.643 に答える
11

スプレッドシートデータへのすべての参照を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
于 2008-09-23T11:12:34.080 に答える
1

これは よりも計算をリフレッシュします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
于 2015-06-10T00:29:57.110 に答える
0
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
于 2014-10-22T12:01:38.523 に答える