VBA Цикл по различным рабочим листам и вставка строк в главный рабочий лист, если выполняется условие - PullRequest
0 голосов
/ 24 октября 2018

Я хотел бы создать код VBA для командной кнопки, которая выполняет следующие действия: 1. Обходит все рабочие таблицы, кроме главной (SOLD). 2. Копирует строки, если выполняется условие (Оплачено). 3. Вставляет строки в главную таблицу (Продано)

Пока у меня есть код, но моя проблема в том, что он циклически перебирает все листы, включая главный лист (т.е. дублирует информацию в главном листе), и если я пытаюсь написать для If ws.name <> "Проданоmsgstr "код перестает работать, сообщая об ошибке в окне сообщения.Пожалуйста, помогите мне изменить код.

    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

1 Ответ

0 голосов
/ 24 октября 2018

Я не знаю, куда вы положили оператор 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
...