如何在VBA中if条件成立后继续执行宏实现逐行复制功能
VBA 行循环复制功能实现
完整代码
Sub kepletmasolos() Dim targetWs As Worksheet Dim checkRow As Long ' 绑定指定工作表,无需手动选中 Set targetWs = ThisWorkbook.Worksheets("XTR MSTR") ' 从第4行开始检查K列状态 checkRow = 4 ' K列当前行非空时持续运行,为空直接终止 Do While Not IsEmpty(targetWs.Range("K" & checkRow)) ' 复制上一行L列内容到当前行L列 targetWs.Range("L" & checkRow - 1).Copy targetWs.Range("L" & checkRow) checkRow = checkRow + 1 Loop End Sub
逻辑说明
- 取消了原代码的
Select操作,直接绑定工作表对象,运行效率更高,也不会触发工作表视图跳转 - 循环起始行设为4,完全匹配「K4非空则复制L3到L4」的需求,自动逐行向下判断
- 无需手动设置终止行号,只要K列当前行单元格为空,循环会自动停止
初学者使用提示
- 如果你需要保留原有K3非空时复制L2到L3的逻辑,在循环代码前补上你原有代码里的
If判断段即可 - 运行前请确认工作簿中存在名为
XTR MSTR的工作表,避免触发下标越界报错
内容的提问来源于stack exchange,提问作者Tamás Hrubos
相关产品推荐
相关产品推荐

