求助完善Excel VBA代码:新增工作表时复制对应行至指定位置
Excel VBA代码完善:新建工作表并复制对应行数据
原代码已实现基于「Source Data (Target 1)」工作表每行创建命名工作表的功能,仅需补充行数据复制逻辑即可满足需求。以下是完善后的完整代码:
Sub NewSheetPerName() Dim sourceWS As Worksheet Dim curWS As Worksheet Dim lastRow As Long Dim x As Long ' 绑定主数据工作表,简化后续引用 Set sourceWS = ThisWorkbook.Sheets("Source Data (Target 1)") ' 获取主表最后一行行号 lastRow = sourceWS.Cells(sourceWS.Rows.Count, 1).End(xlUp).Row For x = 7 To lastRow ' 在最后位置新建工作表 Set curWS = ThisWorkbook.Sheets.Add(After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)) ' 用主表当前行第1列的值命名新表 curWS.Name = sourceWS.Cells(x, 1).Value ' 复制主表当前行所有数据,粘贴到新表A7位置 ' 若需粘贴到A8,将"A7"替换为"A8"即可 sourceWS.Rows(x).Copy Destination:=curWS.Range("A7") Next x End Sub
关键修改说明:
- 新增
sourceWS变量绑定主工作表,避免循环内重复查找工作表,既提升运行效率,也降低因工作表名称拼写错误导致的问题 - 添加核心复制粘贴语句:
sourceWS.Rows(x).Copy Destination:=curWS.Range("A7"),直接复制整行数据到新表指定单元格,无需手动选择粘贴区域 - 显式声明所有变量,符合VBA编程规范,可避免因变量名拼写错误引发的隐性bug
内容的提问来源于stack exchange,提问作者Kristen
相关产品推荐
相关产品推荐

