1

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
4

1 に答える 1