如何禁用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; }