Копировать данные с одного листа на другой, когда условие выполняется динамически - PullRequest
0 голосов
/ 17 апреля 2020

Я бы хотел непрерывно l oop по всем рабочим листам, кроме листов с именами «Сводка» и «Подсчет», чтобы извлечь данные на основе условия (Если значение ячейки «A», на D6). После этого он скопирует определенные значения ячеек (Дата в ячейке F3) и вставит их на лист «Количество». Проблема, с которой я сталкиваюсь, заключается в том, что я не могу вставить нужные данные в таблицу «Count».

Спасибо! Буду признателен за любой вклад / совет!

Мой код:

Private Sub CommandButton1_Click()

Dim sh As Worksheet

Dim erow As Long

For Each sh In ActiveWorkbook.Worksheets

    Select Case sh.Name

    Case Is = "Summary", "Count"

    Case Else
    If sh.[B10] = "Wash the whole vehicle" And sh.[D6].Value = "A" Then
        sh.[F3].Copy
        sh.Cells(11, 4).Copy

        sh("Count").Activate
        lastRowRpt = sh("Count").Range("A" & Rows.Count).End(xlUp).Row
        sh("Count").Range("A" & lastRowRpt + 1).Select
        ActiveSheet.Paste

    End If
End Select
Next sh
End Sub

Ответы [ 2 ]

1 голос
/ 17 апреля 2020

sh("Count") не является допустимым синтаксисом, в то время как Worksheets("Count") является

, за исключением того, что вам не нужно Select / Activate ничего, кроме go с полностью определенными диапазонами

следующим образом:

Dim sh As Worksheet, shCount As Worksheet ' add 'shCount' as a worksheet variable
Set shCount = Worksheets("Count") ' set 'shCount' variable to worksheet "Count"


For Each sh In ActiveWorkbook.Worksheets

    Select Case sh.Name

        Case Is = "Summary", "Count"

        Case Else
            If sh.Range("D6").Value = "A" Then sh.Range("F3").Copy shCount.Cells(Rows.Count, 1).End(xlUp).Offset(1)
    End Select
Next
0 голосов
/ 17 апреля 2020

Если ваш код такой, как указано выше, я предполагаю, что значение вставки на лист Count является пустым или отличается от `Range (" F3 ").

У вас есть две строки кода копирования.

sh.[F3].Copy
sh.Cells(11, 4).Copy

Если вам нужно скопировать два значения, попробуйте скопировать, а затем вставить для каждого. Или, если вам нужно скопировать только диапазон F3, попробуйте закомментировать вторую строку копирования (sh.Cells(11, 4).Copy).

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