我有一份excel文件(10张)。此时,1张纸上有大约1600行和大约148列信息。此表中没有公式。
起初我认为这是我的宏的一个问题。但事实证明,手动插入一行(或删除)会产生同样的问题:延迟14秒(对于一行!)。我已经尝试删除所有条件格式,数据验证,(删除从其他工作表获取数据的隐藏图表)。我尝试过自动计算(我也在宏中进行),我尝试在"设计模式">中插入/删除一行。但似乎没有任何帮助。
我的文件的一个版本(我有不同的备份)似乎已修复它。但我无法在我当前的文件中重现这一点。我不知道修复的内容。
我已经在互联网上寻找解决方案,但尚未找到解决方案。我在excel 2010上运行。谁知道我需要的技巧?或者正在更新excel 2016我的最佳选择?
喝彩!
答案 0 :(得分:0)
重新计算延迟的三个主要原因是计算,事件处理(由于Worksheet_Change)和(在较小程度上)屏幕更新。
把这个'帮手'公共模块代码表中的子过程。
Public Sub appTGGL(Optional bTGGL As Boolean = True)
With Application
.ScreenUpdating = bTGGL
.EnableEvents = bTGGL
.DisplayAlerts = bTGGL
.AutoRecover.Enabled = bTGGL 'no interruptions with an auto-save
.Calculation = IIf(bTGGL, xlCalculationAutomatic, xlCalculationManual)
.CutCopyMode = False
.StatusBar = vbNullString
End With
Debug.Print Timer
End Sub
像这样使用,
sub main()
appTGGL btggl:=false
'do everything you have to do here
appTGGL
end sub
您可以根据需要添加或删除应用程序环境设置。
如果问题原来是写得不好的Worksheet_Change,请在此处或code review发布,以便改进,
答案 1 :(得分:0)
快速更新:当我移到其他工作表时,问题就解决了。这些表格不以任何方式通过公式引用连接。两张纸都有宏观植入的(平面)信息,但宏完成之后它只是平面信息。我试过禁用相关的宏,但这并没有解决问题。只删除其他工作表:如果我删除了其中一张工作表,时间将从14秒缩短到7秒,如果我删除了另一张,那么它将会是0秒。
似乎这些工作表通过某种计算(在宏之外)连接,但我无法想象这可能是什么。任何想法?