VBA, копирование и вставка строк с одного листа на другой - PullRequest
0 голосов
/ 18 марта 2019

Я пытаюсь скопировать строки с одного листа и вставить их на другой лист, если они соответствуют определенному критерию, но я борюсь с функциями копирования и вставки VBA. Может ли кто-нибудь помочь мне, пожалуйста?

Sub Code()

Dim x, y As Range

Number_of_rows_ORIGIN = WorksheetFunction.CountA(ThisWorkbook.Worksheets("Sheet1").Cells(1, 3).EntireColumn)

For Each x In Range(ThisWorkbook.Worksheets("Sheet1").Cells(1, 3), ThisWorkbook.Worksheets("Sheet1").Cells(Number_of_rows_ORIGIN, 3))

    Nb_R_Dest = WorksheetFunction.CountA(ThisWorkbook.Worksheets("Sheet3").Cells(1, 3).EntireColumn)

    If x = ThisWorkbook.Worksheets("Sheet2").Cells(1, 1) Then
        ThisWorkbook.Worksheets("Sheet2").Rows(x.Row).Copy
        ThisWorkbook.Worksheets("Sheet3").Cells(Nb_R_Dest + 1, 1).Paste
    Else
    End If
Next x

End Sub

1 Ответ

0 голосов
/ 18 марта 2019

Я предполагаю, что вы просто хотите скопировать значения. Я немного подправил твой код, чтобы он выглядел чище:

Option Explicit
Sub Code()

    Dim x As Range, LastRow As Long, LastRowPaste As Long
    Dim wsPaste As Worksheet, ws As Worksheet, wsSource As Worksheet

    With ThisWorkbook 'use this to shorten your code
        Set ws = .Sheets("Sheet1")
        Set wsSource = .Sheets("Sheet2")
        Set wsPaste = .Sheets("Sheet3")
    End With

    LastRow = ws.Cells(.Rows.Count, 3).End(xlUp).Row 'This is cleaner to get the last row

    For Each x In Range(ws.Cells(1, 3), ws.Cells(LastRow, 3))
        LastRowPaste = wsPaste.Cells(wsPaste.Rows.Count, 3).End(xlUp).Row + 1
        If x = wsSource.Cells(1, 1) Then
            wsPaste.Rows(LastRowPaste).Value = wsSource.Rows(x.Row).Value
        End If
    Next x

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