将excel vba数组从内存粘贴到工作表需要很长时间才能完成

时间:2018-03-30 06:16:10

标签: arrays excel vba performance

我在内存中有一个数组,我已将其设置为10 x 800个单元格。我在这里填写了我在VBA中从网上获取的信息,并且一切正常。 当我完成填充数组时,我将其粘贴到工作表上 - 这需要大约10秒钟,我认为这对于8,000个单元格来说非常长。

需要注意的事项:

  • 有些单元格将包含长文本字符串(长度数千个字符),即使我在粘贴之前说“Sheet1.Cells.WrapText = False”,工作表也会自动换行。打开它们也需要一些时间。
  • 当我试图使数组相当小,但仍然保留相同的数据时(通过将三个单元格的数据合并为一个并删除故意空列),粘贴的时间没有改变。
  • 我在Excel 2010和2013上尝试过,但两者都是32位。我知道64位它可能会更快,但它也应该在32位运行正常。

我是否应该接受需要一段时间的事实?我知道10秒似乎是随意的,但考虑到拉动数据来填充阵列需要相当少的时间,然后让Excel“挂起”10秒,对于所有运行此操作的人来说都是一次糟糕的体验。

感谢任何指导!

代码:

If Tracker.Count = 0 Then
Application.ScreenUpdating = False
Application.EnableEvents = False
Application.Calculation = xlCalculationManual

Sheet1.Activate
Sheet1.UsedRange.Delete
Sheet1.Range(Cells(1,1), Cells(10, 800)).WrapText = False
Dim t#
t = Timer
Sheet1.Range("A1").Resize(UBound(rawSht), UBound(rawSht, 2)) = rawSht
Sheet1.UsedRange.WrapText = False
Debug.Print Timer - t

Application.ScreenUpdating = True
Application.EnableEvents = True
Application.Calculation = xlCalculationAutomatic
End If

End Sub

0 个答案:

没有答案