VBA使用命令按钮根据单元格值剪切,删除和移动行到另一个工作表

时间:2017-07-06 10:45:51

标签: excel-vba vba excel

我一直在研究一个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

Spreadsheet

1 个答案:

答案 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