拘束を回避する方法は次のとおりです。間接的に行う必要があります。Excelからコピーされたメソッド- ユーザー定義関数からセルを埋める方法は? :
標準モジュールでは:
Public triggger As Boolean
Public carryover As Variant
Function reallysimple(r As Range) As Variant
triggger = True
reallysimple = r.Value
carryover = r.Value / 99
End Function
ワークシート コード:
Private Sub Worksheet_Calculate()
If Not triggger Then Exit Sub
triggger = False
Range("C1").Value = carryover
End Sub
これは、目的に応じて拡張できます。基本的に、UDF はパブリック変数を更新し、それをWorksheet_Calculate
イベントから読み取って、好きなことを行います。
もう 1 つのより複雑な方法は、Excel を自動化し、シェル経由で実行しようとする関数から vbscript ファイルを作成することです。ただし、上記の方法ははるかに信頼性があります。