excel - 大型数据集 VBA 的 For 循环崩溃

标签 excel vba

我正在尝试为每个数据点提供一个索引值。它适用于小型数据集,但是当我的数据集为 750,000 时,程序崩溃。 Excel 给出以下错误消息:对象范围的方法值失败。

这是我的一些代码:

Set datatable = sDataImport.ListObjects("dataTable")  
Dim lastRow As Single

'给导入的数据一个索引值
lastRow = sDataImport.ListObjects("dataTable").ListRows.Count

For i = 1 To lastRow    
datatable.ListColumns("index").DataBodyRange(i, 1).value = i     
Next i

你们有解决这个问题的想法吗?

最佳答案

解决了。工作也快得多。

Application.ScreenUpdating = False    
Application.EnableEvents = False  
Application.Calculation = xlManual

Dim arr As Variant

ReDim arr(1 To lastRow, 1 To 1) As Variant

For i = 1 To lastRow
    arr(i, 1) = i
Next

datatable.ListColumns("index").DataBodyRange.value = arr

Application.ScreenUpdating = True
Application.EnableEvents = True

关于excel - 大型数据集 VBA 的 For 循环崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28008616/

相关文章:

excel - 从 6 开始更改多个 excel 表中第一行颜色的 vba 代码是什么?

excel - 在另一个工作簿中复制工作簿时的 VBA Excel 问题 - 应用程序在复制特定文件时挂起

c++ - Excel VBA 中 C++ DLL 位置的无法解释的行为

数组的工作表函数与代码的 Excel VBA 性能

更新自动过滤器 oncellchange 时 Excel 崩溃

sql - 如何将记录集值分配给二维数组

c# - 将 List<string> 写入 Excel.Range

excel - 删除空白单元格

vba - 单击单元格时如何运行代码?

excel - 具有动态范围的自动填充