Excel VSTO中C#访问ActiveCell出现CS1061编译错误求助
解决方案:CS1061 'Worksheet' 不包含 'ActiveCell' 的定义
错误原因
Excel对象模型中,Worksheet类并没有ActiveCell属性。ActiveCell是属于Excel应用程序(Application)或窗口(Window)的全局状态属性,代表当前激活窗口中选中的单元格,而非某个工作表的专属属性。
修正代码
直接通过Application对象获取活动单元格即可,同时注意Range.Top和Range.Left的类型为double(Excel位置基于点,可能包含小数),而非int:
using Microsoft.Office.Interop.Excel; // 获取当前应用程序的活动单元格 Range activeCell = Globals.ThisAddIn.Application.ActiveCell; // 获取单元格的Top和Left位置(double类型) double topPosition = activeCell.Top; double leftPosition = activeCell.Left; // 若需转换为整数类型,可强制转换: // int topPosition = (int)activeCell.Top; // int leftPosition = (int)activeCell.Left;
额外验证(可选)
如果需要确保活动单元格属于当前激活的工作表,可添加判断逻辑:
Worksheet activeWorksheet = (Worksheet)Globals.ThisAddIn.Application.ActiveSheet; Range activeCell = Globals.ThisAddIn.Application.ActiveCell; // 验证活动单元格所属工作表是否为当前激活工作表 if (activeCell.Parent is Worksheet cellWorksheet && cellWorksheet.Name == activeWorksheet.Name) { double topPosition = activeCell.Top; double leftPosition = activeCell.Left; // 执行后续业务逻辑 }
内容的提问来源于stack exchange,提问作者HamsterRoll
相关产品推荐
相关产品推荐

