簡體   English   中英

VBA使用命令按鈕根據單元格值剪切,刪除行並將其移動到另一個工作表

[英]VBA to cut, delete and move a row to another worksheet based on cell value using command button

我一直在研究vba,如果使用H列標題中的命令按鈕將值“ Complete”或“ Closed Incomplete”輸入到H列,它將自動將整個行從Mailing Log工作表移至Completed Log工作表。

命令按鈕正在工作,但是由於某種奇怪的原因,當它將該行粘貼到已完成的日志中時,而不是將其粘貼到下一個可用行上時,將其粘貼到行“ 1048542”中工作表的底部。 我也只設法使它適用於“完成”值,而不適用於“未完成的結帳”。

有人可以幫忙嗎?

我已經附上了一個電子表格示例,當前的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

電子表格

試試這個吧。 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM