3

我正在使用.net 中的 COM 互操作编写 Excel 插件。我有一个弹出对话框的命令,从对话框中我做了一些工作,比如从几张纸的使用范围中收集数据。问题是,如果一个单元格处于编辑模式,我需要进行的一些调用将引发异常。我想要一种预先确定 Excel 处于编辑模式的方法,以便我可以警告用户先完成对单元格的编辑。

有任何想法吗?

4

3 回答 3

8

有一个 Application.Ready 属性应该为您提供此信息,但实际上它不能可靠地工作。请参阅此处以获取解决方法。

您可能还想在 .net 代码执行其工作时查看设置 Application.Interactive=false。

于 2008-10-21T16:16:34.527 回答
4

试试这个功能:

    Function IsInEditMode(ByRef exapp As Excel.Application) As Boolean
        If exapp.Interactive = False Then
            Return False
        Else
            Try
                exapp.Interactive = False
                exapp.Interactive = True

                Return False
            Catch
                Return True
            End Try
        End If
    End Function
于 2014-07-31T11:31:01.843 回答
2

你没有提到你使用的是哪种语言。SZL的函数是用VB编写的。由于我使用的是 C#,因此我必须对其进行转换。工作得很好。这是等效的 C# 代码。

    bool IsInEditMode(ref Microsoft.Office.Interop.Excel.Application exapp)
    {
        if (exapp.Interactive == false)
        {
            return false;
        }
        else
        {
            try
            {
                exapp.Interactive = false;
                exapp.Interactive = true;
                return false;
            }

            catch
            {
                return true;
            }
        }

    }
于 2017-08-03T19:01:21.327 回答