VBA代码生成连续序列异常:后续序列未按预期重启编号
问题分析
你的代码每次处理第x组数值时,都从stageWs的L列第1行开始写入序列,这会导致:
- 当x=2时,写入的1-8会覆盖L1-L8的原有内容(也就是第一组的前8个数值)
- 若需求是把13组序列依次续写在L列,原代码完全无法实现,因为始终在覆盖开头的行
修复方案
添加一个变量跟踪当前写入的起始行,每次写完一组后更新这个变量,确保下一组从下一行开始写入:
Dim startRow As Long startRow = 1 ' 初始起始行设为1 For x = 1 To depthRngLastRow maxcnt = workingWs.Range("H" & x).Value For i = 1 To maxcnt stageWs.Range("L" & startRow).Value = i startRow = startRow + 1 ' 写完一行后,起始行+1 Next i Next x Debug.Print depthRngLastRow
如果你的需求是每组序列都单独从L1开始(比如每次覆盖之前的序列),那原代码逻辑本身没问题,但可以做以下排查确认:
- 查看
Debug.Print depthRngLastRow的输出,确认循环是否真的执行了x=2到x=13 - 在循环内添加
Debug.Print x, maxcnt,验证workingWs.Range("H" & x).Value的数值是否正确
内容的提问来源于stack exchange,提问作者aaadetos
相关产品推荐
相关产品推荐

