我有一个基本循环,它将一个值放入一张纸上的单元格中,计算整个工作簿,并将一些值返回到另一张纸。返回的值取决于每次计算的整个工作簿。最初,这很好用,但现在我有更多的公式来计算循环太慢了。这个问题有一个共同的解决方案吗?下面是我的代码,但速度太慢了。
Application.ScreenUpdating = False
Dim wsRepository As Worksheet
Dim wsInput As Worksheet
Dim i As Integer
Set wsRepository = ThisWorkbook.Sheets("Repository")
Set wsInput = ThisWorkbook.Sheets("Input")
For i = 4 To 2004
'add investment amount
wsInput.Range("N13").Value = wsRepository.Range("B" & i).Value
'copy back amounts
wsRepository.Range("E" & i).Value = wsInput.Range("U12").Value
wsRepository.Range("C" & i).Value = wsInput.Range("V12").Value
wsRepository.Range("D" & i).Value = wsInput.Range("W12").Value
Next i
wsInput.Activate
答案 0 :(得分:0)
尝试使用Application.ScreenUpdating = False
和Application.SCreenUpdating = True
包围您对计算的调用。这可以显着改善您的表现,因为EXCEL在评估每个新值时都会停止尝试重绘屏幕。
答案 1 :(得分:0)
如果您不提供任何其他输入,将很难向您提供任何建议。
通常,VBA性能可以通过多种方式得到改善。以下是其中大部分内容: http://blogs.office.com/2009/03/12/excel-vba-performance-coding-best-practices/