2017-11-16 13 views
2

이 질문은 Excel에서 추가 기능을 호출하는 Excel-DNA의 해석에 대한 것입니다.Excel-DNA를 사용하면 Excel 추가 기능 함수에서 지정되지 않은 인수를 누락 된 함수와 구별 할 수 있습니까?

Excel의 경우 지정되지 않음누락시 인수가 동일하지 않습니다. 이것은 (이 필요한 하나 개의 선택적 매개 변수 다음 매개 변수가)이 IF 함수로 볼 수 있습니다 :

=IF()를 - 0을 반환

- FALSE

=IF(,,)을 반환 -이

=IF(,) 유효하지 않습니다 Excel 내에서 추가 기능을 등록하는 데 메서드를 사용하고 다음과 같은 함수를 등록합니다.

Delegate del = new Func<object, object, object, object>((a, b, c) => a.ToString() + " " + b.ToString() + " " + c.ToString()); 

var fnAttr = new ExcelFunctionAttribute { Name = "TestFunc", Category = "ExcelDnaTest", Description = "Test function", IsHidden = false }; 

var args = new List<object>(); 
args.Add(new ExcelArgumentAttribute { Name = "Arg1", Description = "First argument", AllowReference = true }); 
args.Add(new ExcelArgumentAttribute { Name = "Arg2", Description = "Second argument", AllowReference = true }); 
args.Add(new ExcelArgumentAttribute { Name = "Arg3", Description = "Third argument", AllowReference = true }); 

ExcelIntegration.RegisterDelegates(new List<Delegate> { del }, new List<object> { fnAttr }, new List<List<object>> { args }); 

이 모든 인수가 공급 될 때 예상대로 작동합니다

=TestFunc("A", "B", "C") - 반환 그러나 "A B의 C"

, 그 결과를 인수하기위한 (즉,

=TestFunc()

=TestFunc(,)

지정되지 않은 인수) 나는 하나의 가) 인수 누락 공급하는 방법을 알고하지 않습니다 (중 두 개 또는 세 개의 인수 누락 제공하는 경우와 동일합니다

=TestFunc(,,)

이 수익의 모든 :

"ExcelDna.Integration.ExcelMissing ExcelDna.Integration.ExcelMissing ExcelDna.Integration.ExcelMissing"Excel의 IF 기능과 유사 추가 기능에 대한

,이 세 가지 공식은 다른 함수 호출을 나타냅니다,하지만 난 방법을 찾을 수 없습니다 - Excel-DNA는 에 대해 Missing 값을 지정하지 않았으며 인수가 없음을 나타냅니다.

Q : Excel-DNA를 사용하면 위의 TestFunc() 세 번 호출을 어떻게 구별 할 수 있습니까?

답변

4

사용자 정의 함수에서 이러한 경우를 구분할 수 없습니다.

엑셀 -DNA가 엑셀 -> .NET UDF 인터페이스를 구현하는 데 사용하는 Excel C API가 모든 UDF가이 구분을 볼 수 있다고 믿지 않습니다 - '지정되지 않은'매개 변수와 같은 개념이 없습니다. C API - 두 경우의 XLOPER 유형은 으로 전달됩니다.

+0

감사합니다. @Govert, 알아두면 도움이됩니다. –