[英]VBA cut and paste row to another sheet based on cell value and delete empty row
[英]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.