2

我正在尝试在某些 UDF 中的 Excel 中的 Range 对象上使用.SpillParent.SpillingToRange,当范围不在调用 UDF 的同一个工作表上时,会出现意外行为。

(我知道如果我使用“#”溢出运算符,我不需要这样的 UDF;我只是用一个非常简单的例子来说明这个问题)。

    Function MyUDF(ByRef Target As Range) As Range
        Set MyUDF = Target.SpillParent
    End Function

如果 [Sheet2!$C$2:$C$10] 是 $C$2 中公式溢出结果的范围,并且在 [Sheet1!$A$1] 中,我有“=MyUDF(Sheet2!C5)”,我得到从 [Sheet1!$C$2] 返回的值,而不是 [Sheet2!$C$2]。

例子:

使用 [Sheet2!$C$2:$C$10] = {1,2,3,4,5,6,7,8,9},

和 [Sheet1!$C$2] = 57,

在 Sheet1 的任何单元格中包含“=MyUDF(Sheet2!C5)”返回“57”,而不是“1”

我的实际功能更复杂,但这个简单的例子说明了异常。我可以使用和字符串操作跳过一些箍.Address,但在我看来,我应该得到 Sheet2 上溢出范围的实际第一个单元格......

4

0 回答 0