Как скопировать всю строку с листа на другой лист - PullRequest
0 голосов
/ 30 апреля 2020

Я относительно новичок в VBA. У меня есть эта подпроцедура CutePaste, которую я вызываю в worksheet_change (ByVal Target As Range), которая выполняется всякий раз, когда изменяется значение в столбце "F". Моя цель - скопировать всю строку измененной ячейки и вставить ее на другой лист («Обработанный ролями»). Мой код сейчас только копирует обновленную ячейку и вставляет ее на новый лист. Посоветуйте, пожалуйста, как мне скопировать всю строку обновленной ячейки.

Sub CutPaste()

  If Not Intersect(myTarget, Range("F:F")) Is Nothing Then
    ActiveCell.Activate    
    a = Sheets("Cast Worked").Cells(Rows.Count, "A").End(xlUp).Row + 1    
    Sheets("Cast Worked").Range("A" & a).Value = ActiveCell.Value    
    ActiveCell.Offset(1, 0).Select    
  End If

End Sub

1 Ответ

0 голосов
/ 30 апреля 2020

Вы рядом. Для этого вы можете использовать метод Range.Copy . Кроме того, вам нужно передать цель из события worksheet_change в подпрограмму.

Sub worksheet_change(ByVal Target As Range)
  'Pass target range to subroutine
  CutPaste(Target)
End Sub

Sub CutPaste(myTarget As Range) 
  If Not Intersect(myTarget, Range("F:F")) Is Nothing Then        
    a = Sheets("Cast Worked").Cells(Rows.Count, "A").End(xlUp).Row + 1    
    Target.EntireRow.Copy Destination:=Sheets("Cast Worked").Range("A" & a)
    Target.Offset(1, 0).Select    
  End If  
End Sub

Я удалил ActiveCell.Activate, поскольку установка активной ячейки в активную является излишней.

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