You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VBA宏为何跳过第二个For循环?求故障原因排查

VBA宏第二个For循环未执行的问题修复

问题根源

第二个循环直接跳过的核心原因是循环条件的结束值计算错误:
ExportNumRows是A17到其下方最后一行的总行数(比如A17-A21共5行时,ExportNumRows=5),你写的循环条件是counter = 17 To ExportNumRows +5,也就是17 To 10——起始值大于结束值,VBA会直接跳过该循环。

修正后的循环代码

将第二个循环的结束值改为17 + ExportNumRows -1,这样就能精准覆盖A17到目标区域最后一行:

'Start of loop
For counter = 17 To 17 + ExportNumRows - 1
 Set rng = Worksheets("Averages").Cells(counter, 1)
 Set rng2 = Worksheets("Master").Columns("A:A").Find(What:=rng.Value, MatchCase:=True)
   If Not rng2 Is Nothing Then
    rownumber = rng2.Row
    rng.Offset(0, 1) = Worksheets("Master").Cells(rownumber, 2).Value
    rng.Offset(0, 2) = Worksheets("Master").Cells(rownumber + 1, 3).Value
    rng.Offset(0, 3) = Worksheets("Master").Cells(rownumber + 2, 3).Value
   End If
'End of loop
Next counter

额外优化建议

  • 所有Range操作都限定工作表:比如原代码中ExportNumRows = Range("A17", Range("A17").End(xlDown)).Rows.Count要改成ExportNumRows = Worksheets("Averages").Range("A17", Worksheets("Averages").Range("A17").End(xlDown)).Rows.Count,避免当前工作表切换导致的引用错误。
  • 第一个循环的结束值ImportNumRows +5逻辑正确(起始6对应A6,结束6+ImportNumRows-1),同样建议给Range加上工作表限定。

内容的提问来源于stack exchange,提问作者Paul Omeara

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 06:43:25