У меня есть набор данных, который содержит кучу информации о клиентах.Я хочу, чтобы эта информация была перенесена на другой лист, когда Yes
введен в ячейку в строке K
, и исходная строка, содержащая информацию, которая будет удалена с первого листа
Я делаю это с помощьюнажмите кнопку.Работает нормально, и строки были удалены, но, конечно, когда он удаляет строку, номера строк сдвигаются на единицу, и поэтому следующая строка пропускается (строка 15 удаляется, а затем строка 16 становится строкой 15 и т. Д.), Поэтому яЯ подумал, что обратный путь - это путь, но я не могу понять, насколько это возможно - я думал, что это будет просто!Вот код, который я использую:
Private Sub UpdateSheet2_Click()
Dim c As Range
Dim Source As Worksheet
Dim Target As Worksheet
'Change worksheet designation as needed
Set Source = ActiveWorkbook.Worksheets("Sheet1")
Set Target = ActiveWorkbook.Worksheets("Sheet2")
For Each c In Source.Range("K:K") 'Covers all rows
If c = "yes" Then
Source.Range("A" & c.Row & ":B" & c.Row).Copy Target.Range("A" & Rows.Count).End(xlUp).Offset(1, 0)
Source.Range("D" & c.Row & ":F" & c.Row).Copy Target.Range("C" & Rows.Count).End(xlUp).Offset(1, 0)
Source.Range("H" & c.Row & ":J" & c.Row).Copy Target.Range("F" & Rows.Count).End(xlUp).Offset(1, 0)
End If
' If c = "yes" Then
' Source.Rows(c.Row).EntireRow.Delete
' End If
Next c
For i = 500 To 1 Step -1
If Source.Range("K" & i) = "yes" Then
Source.Rows(i.Row).EntireRow.Delete
End If
Next i
End Sub
Сейчас я просто устанавливаю номера строк от 1 до 500, я изменю это, когда у меня будет работать базовая функциональность.Вы можете увидеть, где я закомментировал оригинальный метод удаления в цикле For Each.В настоящее время я получаю сообщение об ошибке «Требуется объект» в строке Source.Rows(i.Row).EntireRow.Delete