VBA数组存储输出结果问题:循环取值后写入Excel工作表
修正后的VBA代码实现需求
Sub myArrayRange() Dim resultArray() As Variant Dim i As Integer Dim ws As Worksheet ' 绑定Cashflows工作表,避免重复查找开销 Set ws = ThisWorkbook.Worksheets("Cashflows") ' 初始化数组,匹配1-1000的循环次数(二维数组适配Excel单元格区域结构) ReDim resultArray(1 To 1000, 1 To 1) ' 执行1到1000的循环逻辑 For i = 1 To 1000 ' 给C3赋值当前循环数 ws.Range("C3").Value = i ' 强制刷新工作表,确保C20的公式计算出最新值 ws.Calculate ' 将C20的结果存入数组对应位置 resultArray(i, 1) = ws.Range("C20").Value Next i ' 将数组内容批量写入工作表(示例写入当前工作表A1:A1000,可自行修改目标区域) ThisWorkbook.ActiveSheet.Range("A1:A1000").Value = resultArray End Sub
关键修正说明
- 数组逻辑重构:原代码错误用A列数据初始化数组,改为根据循环次数初始化固定长度的二维数组,适配Excel单元格区域的赋值规则
- 工作表对象绑定:提前获取
Cashflows工作表对象,减少重复调用的性能损耗 - 计算刷新:添加
ws.Calculate确保C3赋值后,C20的关联公式能即时计算出最新结果 - 错误代码移除:删除原代码中
iAmount = UBound(Model_cv, 1)这类逻辑错误的赋值语句 - 批量写入优化:循环结束后一次性将数组写入目标区域,比逐单元格写入效率提升显著
内容的提问来源于stack exchange,提问作者Zohaib
相关产品推荐
相关产品推荐

