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并将其显示在原始单元格中。有没有更好的方法来实现这个功能?
答案 0 :(得分:2)
查看此MSDN Library article末尾有关Application.Caller属性的表。你已经发现了#REF的价值!错误。谷歌'excel错误2023'获取更多信息。我有点怀疑你可以使用这个属性,因为调用者是你的C#程序。