get_Caller(Type.Missing)
方法有些奇怪。它返回一个负整数-2146826265,而不是应该返回的Range对象。
以前有人遇到过这个问题吗?为什么会这样,我该如何解决它?
谢谢。
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并在原始单元格中显示它。有没有更好的方法来实现这个功能? 查看这篇关于应用程序的MSDN Library文章末尾的表。调用者的财产。您已经发现了#REF!错误。谷歌"excel error 2023"获取更多信息。我有点怀疑你是否可以使用这个属性,因为调用者是你的c#程序。