Данные функции IF из нескольких листов вставляются в чистый лист VBA - PullRequest
0 голосов
/ 01 октября 2019

Извините, если это дубликат, но я не знаю, как правильно это сформулировать.

У меня есть рабочая книга с 7 листами, названными по-разному.

Я хочу написать функцию if, которая будет искать все листы и, если она соответствует этим критериям, вставлять в лист «Имя». Я пробовал несколько способов и не могу этого достичь. Вот где я получу критерии.

Dim Client As String
Client = InputBox("Enter the Clients name")

Этот код работает, если я извлекаю данные из одного листа:

Dim pasteRowIndex As Long
pasteRowIndex = 2

Dim LR as Long
LR = Cells(Rows.Count, 1).End(xlUp).Row


For I = 2 To LR

    If Cells(I, 1).Value = Client Then


        'Now the code to grab the data and past into a new workbook
        Rows(I).Select                           'This just works on the active sheet, but I want this to iterate through
        all the sheets and paste the range into sheet2 in this code
        Selection.Copy


        'Switch to the sheet where you want to paste it & paste
        Sheets("Sheet2").Select                  'However I will change this name
        Rows(pasteRowIndex).Select
        ActiveSheet.Paste

        'Next time you find a match, it will be pasted in a new row
        pasteRowIndex = pasteRowIndex + 1


        'Switch back to your table & continue to search for your criteria
        'Sheets("Sheet1").Select

    End If

Next I

Хотя приведенный выше код работает для одного листа, я хочу, чтобы макрос перебрал все листы, иони не называются Sheet1-Sheet7.

Кроме того, должен быть более чистый способ сделать это.

Извините, если это неясно, дайте мне знать, если требуется больше ясности.

1 Ответ

0 голосов
/ 01 октября 2019

Вы можете просмотреть все листы в своей рабочей книге следующим образом:

Dim Sht As Worksheet

For Each Sht In Worksheets
    If Sht.Name <> "Sheet1" Or Sht.Name <> "Sheet7" Then
        'Do your stuff here
        'sample code to refer the row at specific sheet without activating it
        Sht.Rows(I).Copy 
        Sheets("Sheet2").Cells(pasteRowIndex, 1).PasteSpecial xlPasteAll
    End If
Next

Рекомендуется избегать использования методов .Select и .Activate. Вместо этого используйте переменную Worksheet для ссылки на конкретный лист.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...