Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VSTO C#:读取始终为nul的当前单元格值_C#_Excel_Vsto - Fatal编程技术网

VSTO C#:读取始终为nul的当前单元格值

VSTO C#:读取始终为nul的当前单元格值,c#,excel,vsto,C#,Excel,Vsto,情景: 我必须阅读活动表中活动单元格的内容。如果当时的值为非空,例如“abc”,我必须禁用功能区栏中的一个项目,当用户清除该时间项目上的单元格时,功能区栏中的项目应为enable item 我编写了以下代码以获取当前单元格的值: private string CurrrentCellValue() { var BeginCell = string.Empty; var CellValue = string.Empty; var activeWorkBook = Glob

情景:

我必须阅读活动表中活动单元格的内容。如果当时的值为非空,例如“abc”,我必须禁用功能区栏中的一个项目,当用户清除该时间项目上的单元格时,功能区栏中的项目应为enable item

我编写了以下代码以获取当前单元格的值:

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。如何动态读取活动单元格的内容

简而言之,我正在尝试复制excel的fx(插入函数)


请提供帮助。

您是想判断Excel是否处于单元格编辑模式,还是只想在用户接受活动单元格后获取其值?当用户通过按enter、tab、光标键等退出单元格编辑模式时,接受单元格值。。。如果您想要的是前者,那么现有的问题是如何判断Excel是否处于单元格编辑模式。我已使用SendKeys({ENTER})以编辑模式退出单元格,现在如果我在单元格中键入任何值,我的功能区项将被禁用,如果已启用清除单元格功能区项。但问题是,当我运行任何公式时,它以字符串的形式给出输出,并且在选择单元格时,功能区中的项目也被禁用,但应该启用。请帮助。您是想告诉Excel是否处于单元格编辑模式,还是只想在用户接受活动单元格后获取其值?当用户通过按enter、tab、光标键等退出单元格编辑模式时,接受单元格值。。。如果您想要的是前者,那么现有的问题是如何判断Excel是否处于单元格编辑模式。我已使用SendKeys({ENTER})以编辑模式退出单元格,现在如果我在单元格中键入任何值,我的功能区项将被禁用,如果已启用清除单元格功能区项。但问题是,当我运行任何公式时,它以字符串的形式给出输出,当选择单元格时,即使在那个时候,ribbon中的项也被禁用,但它应该被启用。请帮助。