【问题标题】:Filling a sheet from an array with Excel VBA takes very long使用 Excel VBA 从数组中填充工作表需要很长时间
【发布时间】:2015-08-28 16:50:33
【问题描述】:

我有这个 Excel VBA 代码在工作簿表中转储一个 166 行大小的数组需要 5 秒以上。 我试图隐藏工作表,但得到的只是每个单元格的“等待”图标。

Dim wkb As Workbook
Set wkb = Workbooks.Add

For row = 0 To UBound(fullReport, 1)
    For col = 0 To UBound(fullReport, 2)
       wkb.Sheets(1).Cells(row + 1, col + 1) = fullReport(row, col)
    Next col
Next row

奇怪的是,第一次总是很慢,然后有时很快。

【问题讨论】:

  • 您是否有取决于您设置的值的公式?还可以尝试一次性设置数组,wkb.Sheets(1).Cells(1, 1).Resize(UBound(fullReport, 1), Ubound(fullReport, 2)).Value = fullReport
  • 您可以观看它的运行视频:goo.gl/re3uQg 29 行需要 6 秒。最后一个走得快,第一个走得慢。
  • 哇!它工作得非常好。我不知道可以像这样一次性分配一个数组。非常感谢。

标签: arrays excel vba


【解决方案1】:

试试

Application.ScreenUpdating = False

在宏的开头。您的代码应该运行得更快。

【讨论】:

  • 我试过了,但差别很小。它真正起作用的代码是用 wkb.Sheets(1).Cells(1, 1).Resize(UBound(fullReport, 1), Ubound(fullReport, 2)).Value = fullReport 替换双 For 循环
猜你喜欢
  • 1970-01-01
  • 2013-07-12
  • 2018-02-19
  • 2022-01-12
  • 2014-06-13
  • 1970-01-01
  • 2018-06-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多