excel - 粘贴到另一个工作表的下一个空行
问题描述
下面的代码,当用户将问题记录到表单中时,将登录相应的问题选项卡。
团队完成问题并将其标记为“完成并验证”后,我想将该问题(行)从当前选项卡移出到“5. 完成并验证”选项卡。
问题是,假设当前选项卡中有 9 行数据,宏将该行粘贴到“5. Complete & Verified”选项卡的第 9 行。
我试图从 B2 开始一个接一个地粘贴。我还尝试将选项卡名称粘贴到第 1 列(A 列)作为标识符。
Sub Complete()
ActiveSheet.Activate
Dim objWS As Worksheet
Set objWS = ActiveSheet
Dim intLastRowSrc As Long
intLastRowSrc = ActiveSheet.Cells.Find("*", searchorder:=xlByRows, searchdirection:=xlPrevious).Row
ActiveSheet.Activate
Dim intLastRowSDes As Long
intLastRowSDes = ActiveSheet.Cells.Find("*", searchorder:=xlByRows, searchdirection:=xlPrevious).Row + 1
Dim r As Long
For r = 2 To intLastRowSrc
If objWS.Cells(r, "R") = "Complete & Verified" Then
Sheets("5. Complete & Verified").Range("B" & intLastRowSDes & ":T" & intLastRowSDes).Value = objWS.Range("A" & r & ":S" & r).Value
objWS.Rows(r).Delete
Sheets("5. Complete & Verified").Cells(intLastRowSDes, 1) = ws1.Name
intLastRowSrc = intLastRowSrc - 1
intLastRowSDes = intLastRowSDes + 1 'Issue - I need it to paste into next row with now data in 5. tab
End If
Next
Exit Sub
解决方案
有一些事情需要调整才能发挥作用(我认为)你想让事情发挥作用。
首先,设置对源工作表和目标工作表的引用并直接使用它们,而不是每次都命名。
其次,您不需要Activate
任何工作表,所以让我们删除那些
第三,如果您要删除for
循环中的行,请始终从数据范围的底部开始并向上移动 - 否则当您删除第 21 行和第 22 行向上移动时,您的循环将完全忽略 22 向上移动而不被检查的事实你会错过行
第四,只需从循环内部获取目标行,而不是尝试增加计数
第五,您将目标工作表上的第 1 列设置为ws1.name
但从未定义它,因此我已将其替换为对源工作表名称的引用。
如果其中任何一个没有意义,请在下面发表评论,我会尝试更好地解释。
Sub Complete()
Dim sourceWS As Worksheet
Set sourceWS = ActiveSheet
Dim destWS As Worksheet
Set destWS = ThisWorkbook.Worksheets("5. Complete & Verified")
Dim intLastRowSrc As Long
intLastRowSrc = sourceWS.Cells.Find("*", searchorder:=xlByRows, searchdirection:=xlPrevious).Row
Dim intLastRowSDes As Long
Dim r As Long
For r = intLastRowSrc to 2 Step -1
If sourceWS.Cells(r, "R") = "Complete & Verified" Then
intLastRowSDes = destWS.Cells.Find("*", searchorder:=xlByRows, searchdirection:=xlPrevious).Row + 1
destWS.Range("B" & intLastRowSDes & ":T" & intLastRowSDes).Value = sourceWS.Range("A" & r & ":S" & r).Value
sourceWS.Rows(r).Delete
destWS.Cells(intLastRowSDes, 1) = sourceWS.Name
End If
Next
Exit Sub
推荐阅读
- android - firestore get、set 方法的超时时间以及如何在 Android 中增加 get 和 set 方法的超时时间
- stripe-payments - 如果第一个不可用,则更改付款方式
- wordpress - 是否可以在网站 AMP 版本中包含作曲家脚本?
- c++ - 在函数中向量化循环
- encoding - SIM800接收短信编码问题
- java - Cacheable 注解中的同步参数如何工作?
- java - 我想从java中的整数arraylist中删除重复的子整数arraylist
- c - 不能通过c中的另一个字符串连接字符串
- jquery-plugins - Laravel 或 Jquery 中是否有任何方法可以防止用户在访问我的网站时从某些特定内容的浏览器上截屏?
- javascript - 如何使用 babel-plugin-module-resolver 为根路径设置别名并禁用其他根导入?