检查宏样式Excel UDF中的数组公式

检查宏样式Excel UDF中的数组公式,excel,excel-addins,excel-dna,netoffice,Excel,Excel Addins,Excel Dna,Netoffice,我正在使用ExcelDNA在Excel和NetOffice中创建UDF,用于版本无关的自动化调用。在宏类型函数中,我可以使用以下方法从单元格中获取公式: ExcelReference cellRef; // of course in reality this is assigned var formula = (string)this.excelCall(XlCall.xlfGetFormula, cellRef); 此外,我想知道这是否是数组公式的一部分,如果是,其范围是什么。使用Excel

我正在使用ExcelDNA在Excel和NetOffice中创建UDF,用于版本无关的自动化调用。在宏类型函数中,我可以使用以下方法从单元格中获取公式:

ExcelReference cellRef; // of course in reality this is assigned
var formula = (string)this.excelCall(XlCall.xlfGetFormula, cellRef);
此外,我想知道这是否是数组公式的一部分,如果是,其范围是什么。使用Excel automation,我可以使用以下内容:

Range("A1").HasArray
Range("A1").CurrentArray.Address
但是,Microsoft不鼓励在UDF调用中使用自动化:


那么,有没有办法通过C API获取HasArray和CurrentArray属性,或者有没有人知道(在声明为宏类型的UDF上下文中)使用自动化是否可以?

get.CELLinformation函数(信息类型为\u num 49)将返回单元格是否是数组的一部分。从Excel DNA(宏类型)函数:

bool isArray = (bool)XlCall.Excel(XlCall.xlfGetCell, 49, cellRef);

HasArray
允许在UDF中使用。它返回正确的结果<代码>函数arr(r作为范围):arr=r。HASRARY:结束函数作为自定义项有效。不鼓励(通常是阻止)的是从UDF中修改
工作簿
工作表
的任何其他部分。通常允许您提取UDF中的信息(有些例外)。感谢Byron-使用自动化对此进行的测试表明,对我来说,HasArray似乎可以工作并且没有造成任何问题,但CurrentArray在UDF中调用时可能返回错误答案,返回单个单元格,即使它是更大的ArrayTanks的一部分,这肯定可以替代IsArray。有没有一种方法可以得到数组公式(即CurrentArray)的形状,你知道吗?如果两个相邻的单元格都是数组的一部分,并且都有相同的公式,我需要能够判断它们是否都是同一数组的一部分?我想您必须选择单元格,然后使用select.SPECIAL和6来选择当前数组(如按CTRL+/)。谢谢-我会尝试一下