VSTO C#:读取总是nul的当前单元格值

场景:

我必须读取活动工作表中活动单元格的内容。 如果这个值是非空的,例如那个时候的“abc”,我必须禁用function区栏中的一个项目,并且当用户清除该单元格时,项目应该是function区栏中的启用项目。

我已经写了这个代码来获取当前单元格的值:

private string CurrrentCellValue() { var BeginCell = string.Empty; var CellValue = string.Empty; var activeWorkBook = Globals.ThisAddIn.Application.ActiveWorkbook; if (activeWorkBook != null) { var sheet = activeWorkBook.ActiveSheet as Worksheet; if (!sheet.ProtectContents) { var range = Globals.ThisAddIn.Application.Selection as Range; if (range != null) { string address = range.get_Address(); string[] cells = address.Split(new char[] { ':' }); BeginCell = cells[0].Replace("$", ""); var activeSheet = Globals.ThisAddIn.Application.ActiveSheet; range = activeSheet.Range(BeginCell); Range item = range.get_Item(1); CellValue = item.Value2; } } } return CellValue; } 

项目在色带栏中:

我已经使用命令(ICommand)和条状物品

  _ribbonItem.ItemOpenCommand = new DelegateCommand(ItemButtonClick, canexecuteMethdod1); 

我所做的是:

在canexecuteMethdod1方法中,我调用了读取当前单元格的方法,如果单元格的值不是null,那么ItemButtonClick方法将不会执行,否则会执行。

但是我所面临的问题是,当活动单元格中有一些值时,我将所有的值都设置为null。 如何dynamic地读取活动单元格的内容?

总之,我试图复制excel的fx(插入函数)。

请帮忙。