我一直在研究一个vba,它会自动将整行从邮件日志工作表移动到完成日志工作表,如果值为"完成"或者"关闭不完整"使用H列标题中的命令按钮输入H列。
命令按钮正常工作,但由于某些奇怪的原因,它将行粘贴到完成的日志中,而不是将其粘贴到下一个可用行上,而是将其粘贴到行中的工作表底部#34; 1048542&#34 ;.我也只是设法让它为价值“完成”而努力。还没有关闭不完整。
有人可以帮忙吗?
我附上了电子表格的示例,我目前的VBA代码如下:
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
答案 0 :(得分:0)
试试这个。 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