COM/PIA インターフェイスを介して Excel の動的な性質に対処できるように、F# でいくつかのヘルパー関数を作成しました。ただし、Excel-DNA UDF でこれらの関数を使用しようとすると、Excel-DNA が Excel から配列内の値を前処理しているため、期待どおりに機能しません。たとえばnull
、に変わりますExcelDna.Integration.ExcelEmpty
これは、null
. パターン マッチングにケースを追加することで、これを回避できます。
let (|XlEmpty|_|) (x: obj) =
match x with
| null -> Some XlEmpty
| :? ExcelDna.Integration.ExcelEmpty -> Some XlEmpty
| _ -> None
ただし、変換してから再度変換するのはもったいない気がします。Excel-DNA に UDF の範囲値の追加処理を行わないように指示し、COM/PIA インターフェイスと同等のものを提供する方法はありますか? すなわちRange.Value XlRangeValueDataType.xlRangeValueDefault
編集:
私は自分の引数を次のobj
ように宣言します:
[<ExcelFunction(Description = "Validates a Test Table Row")>]
let isTestRow (headings: obj) (row: obj) =
let validator = TestTable.validator
let headingsList = TestTable.testHeadings
validateRow validator headingsList headings row