如何判断Excel应用程序是否处于单元格编辑模式?

我正在使用.NET的COM Interop编写一个Excel Addin。 我有一个命令,popup一个对话框,从对话框中,我做了一些工作,如收集来自使用的几个工作表范围内的数据。 问题是,如果一个单元格处于编辑模式,我需要做的一些调用将会抛出exception。 我想事先确定Excel处于编辑模式,这样我可以提醒用户先完成编辑单元格。

有任何想法吗?

有一个Application.Ready属性应该给你这个信息,但实际上它不能可靠地工作。 在这里看到一个hackaround。

你可能也想在你的.net代码正在做的时候把Application.Interactive设置为false。

试试这个function:

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 

你没有提到你正在使用哪种语言。 SZL的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; } } }