为什么Application.get_Caller(Type.Missing)返回负整数?

时间:2011-10-25 09:40:16

标签: c# excel com interop vsto

get_Caller(Type.Missing)方法有些奇怪。它返回一个负整数 -2146826265 ,而不是范围对象。

之前有没有人遇到过这个问题?为什么这样,我该如何解决?

感谢。

Excel.Range range = (Excel.Range) application.get_Caller(System.Type.Missing);

如果我尝试显式用户类型Excel.Range,则上述代码将失败。错误消息显示“无法将类型'int'转换为'Microsoft.Office.Interop.Excel.Range'。

编辑:

获取单元格调用者的目的是将其传递给我的以下函数:

private string getResultFromResultSheet(Excel.Range originalSheetRange, Excel.Worksheet resultSheet)
        {
            string DataResult = "";
            try
            {
                string os_currentAddress = originalSheetRange.get_Address(Type.Missing, Type.Missing, Excel.XlReferenceStyle.xlA1, Type.Missing, Type.Missing);
                Excel.Range currentRRange = null;

                currentRRange = resultSheet.get_Range(os_currentAddress, Type.Missing);
                if (currentRRange != null)
                {
                    if (string.IsNullOrEmpty(Convert.ToString(currentRRange.Value)))
                        DataResult = "";
                    else
                        DataResult = Convert.ToString(currentRRange.Value);
                }
            }
            catch (Exception ex)
            {
            }
            return DataResult;
        }

使用该函数的返回值,我可以将其传递回UDF并将其显示在原始单元格中。有没有更好的方法来实现这个功能?

1 个答案:

答案 0 :(得分:2)

查看此MSDN Library article末尾有关Application.Caller属性的表。你已经发现了#REF的价值!错误。谷歌'excel错误2023'获取更多信息。我有点怀疑你可以使用这个属性,因为调用者是你的C#程序。