【问题标题】:VBA Looping through different worksheets and pasting rows into master worksheet if condition is met如果满足条件,VBA循环遍历不同的工作表并将行粘贴到主工作表中
【发布时间】:2019-03-28 09:02:49
【问题描述】:

我想为执行以下操作的命令按钮创建 VBA 代码: 1. 遍历除主工作表以外的所有工作表(已售出) 2.如果满足条件则复制行(付费) 3. 将行粘贴到主工作表(已售出)

到目前为止,我有代码,但我的问题是它遍历所有工作表,包括主工作表(即复制主工作表中的信息),如果我尝试为 If ws.name"Sold" 编写代码,则代码停止工作给出消息框错误。请帮我修改代码。

    Private Sub CommandButton1_Click()
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets

Dim i, LastRow

LastRow = ws.Range("A" & Rows.count).End(xlUp).Row
For i = 2 To LastRow
If ws.Cells(i, "M").Value = "Paid" Then
ws.Cells(i, "M").EntireRow.Copy Destination:=Sheets("Sold").Range("A" & Rows.count).End(xlUp).Offset(1)
End If
Next i
Next ws
End Sub

【问题讨论】:

    标签: vba loops conditional-formatting worksheet


    【解决方案1】:

    我不知道你把 IF 语句放在哪里,但它必须这样工作:

    Dim ws As Worksheet
    Dim i, LastRow
    
    For Each ws In Worksheets
    If ws.Name <> "Sold" Then
        LastRow = ws.Range("A" & Rows.Count).End(xlUp).Row
        For i = 2 To LastRow
            If ws.Cells(i, "M").Value = "Paid" Then
             ws.Cells(i, "M").EntireRow.Copy Destination:=Sheets("Sold").Range("A" & Rows.Count).End(xlUp).Offset(1)
            End If
        Next i
    End If
    
    Next ws
    

    【讨论】:

    • 谢谢!完美运行。
    • @pharzandinc,请将此答案标记为已接受。它向其他人表明问题已解决,并给予回答的人一些功劳。保重:) Accepting Answers: How does it work?
    • @wizhi 谢谢你告诉我这个,我正在考虑将其标记为已回复,但没有看到任何内容,所以在你提到它之前保持原样
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-02
    • 1970-01-01
    • 1970-01-01
    • 2016-08-06
    • 2017-11-26
    相关资源
    最近更新 更多