如何禁用select任何单元格停止计算的Excel 2010function/错误?

我正在一个Excel表格中,在一个xll插件的帮助下,我正在尝试更新数据。 我按下Ctrl + Alt + F9开始计算,但计算停止在任何按键或单元格select。 有没有办法来覆盖这个function,或错误?

这不会发生在Excel 2003上。

非常好的问题!

不知道这将在您的C#插件中工作,但与Excel 2010应用程序对象模型,您可以使用Application.CalculationInterruptKey停止按键时数据计算中断。 没有testing,但可以这样做。

Ctrl Alt F9的开头应用这个:

Dim lKey As Long lKey = Application.CalculationInterruptKey Application.CalculationInterruptKey = xlNoKey 

然后在计算结束时,将其重置为原来的值,或将其更改为默认值xlAnyKey

 Application.CalculationInterruptKey = lKey ' Or xlAnyKey 

如果您有其他事件触发的Subs,则可能需要添加有关Application.CalculationState的行,以便在Application.CalculationState = xlDone之前不会进行更改。

希望这可以帮助。

为什么在计算过程中需要select一个单元格?是否有理由不能等待完成? 在计算过程中select/更改单元格是危险的,因为数据可能还没有正确计算。

如果你只是担心意外的按键 – 这应该防止任何意外的按键

 Sub SetUpUserInterface() Dim Current As Worksheet For Each Current In Worksheets Current.Protect , UserInterfaceOnly:=True 'Current.Protect Password:="", UserInterfaceOnly:=True Next End Sub 

尝试closuresUserControl,EnableEvents并将计算设置为手动:

 private static XlCalculation xlCalculation = XlCalculation.xlCalculationAutomatic; static public void TurnOffApplicationSettings(Excel.Application xlApp) { xlApp.ScreenUpdating = false; xlApp.DisplayAlerts = false; xlCalculation = xlApp.Calculation; //Record the current Calculation Mode xlApp.Calculation = XlCalculation.xlCalculationManual; xlApp.UserControl = false; xlApp.EnableEvents = false; } 

然后运行你的长操作,并将UserControl和EnableEvents恢复为true,计算返回到Automatic(或者更正确地说是之前的设置):

 static public void TurnOnApplicationSettings(Excel.Application xlApp) { xlApp.ScreenUpdating = true; xlApp.DisplayAlerts = true; xlApp.Calculation = xlCalculation; xlApp.UserControl = true; xlApp.EnableEvents = true; }