如何判断Excel Application是否处于单元格编辑模式?

时间:2008-10-21 14:02:28

标签: .net excel vsto com-interop

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

有什么想法吗?

3 个答案:

答案 0 :(得分:8)

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

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

答案 1 :(得分: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

答案 2 :(得分:1)

您没有提到您正在使用的语言。 SZL's function是用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;
            }
        }

    }