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