Excel VBA使用命令按钮基于单元格值剪切、删除行并将其移动到另一个工作表
我一直在使用vba,如果使用H列标题中的命令按钮将值Complete或Closed Complete输入H列,该vba将自动将整行从邮件日志工作表移动到已完成的日志工作表 命令按钮正在工作,但由于某种奇怪的原因,当它将行粘贴到完成的日志中时,它没有将行粘贴到下一个可用行上,而是将行粘贴到第1048542行的工作表底部。此外,我只设法使它为“Complete”值工作,而没有为Closed Complete值工作 有人能帮忙吗 我已附上我的电子表格示例,我当前的VBA代码如下:Excel VBA使用命令按钮基于单元格值剪切、删除行并将其移动到另一个工作表,excel,vba,Excel,Vba,我一直在使用vba,如果使用H列标题中的命令按钮将值Complete或Closed Complete输入H列,该vba将自动将整行从邮件日志工作表移动到已完成的日志工作表 命令按钮正在工作,但由于某种奇怪的原因,当它将行粘贴到完成的日志中时,它没有将行粘贴到下一个可用行上,而是将行粘贴到第1048542行的工作表底部。此外,我只设法使它为“Complete”值工作,而没有为Closed Complete值工作 有人能帮忙吗 我已附上我的电子表格示例,我当前的VBA代码如下: Private Su
Private Sub CommandButton1_Click()
Dim Check As Range, r As Long, lastrow2 As Long, lastrow As Long
Application.ScreenUpdating = False
lastrow = Worksheets("Mailing LOG").UsedRange.Rows.Count
lastrow2 = Worksheets("Completed Log").UsedRange.Rows.Count
If lastrow2 = 1 Then lastrow2 = 0
For r = lastrow To 2 Step -1
If Range("H" & r).Value = "Complete" Then
Rows(r).Cut Destination:=Worksheets("Completed Log").Range("A" & lastrow2 + 1)
lastrow2 = lastrow2 + 1
Else:
End If
Next r
Application.ScreenUpdating = True
End Sub
试试这个。UsedRange并不总是像预期的那样工作,因为它可以包含以前格式化的单元格。我还为您的代码添加了一些工作表引用,以提高代码的清晰度,并确保您的代码在任何工作表处于活动状态时都能按预期工作
Private Sub CommandButton1_Click()
Dim Check As Range, r As Long, lastrow2 As Long, lastrow As Long
Application.ScreenUpdating = False
lastrow = Worksheets("Mailing LOG").UsedRange.Rows.Count
For r = lastrow To 2 Step -1
If Worksheets("Mailing LOG").Range("H" & r).Value = "Complete" Then
Worksheets("Mailing LOG").Rows(r).Cut Destination:=Worksheets("Completed Log").Range("A" & Rows.Count).End(xlUp)(2)
End If
Next r
Application.ScreenUpdating = True
End Sub
谢谢,这太棒了,我还需要添加Closed Complete的值,但是当我使用OR将Complete和Complete分开时,这不起作用。不确定您想要做什么,但如果WorksheetsMail LOG.RangeH&r.value=Complete或WorksheetsMail LOG.RangeH&r.value=Closed,则是这样表述的