2016-07-06 3 views
-1

У меня есть рабочий лист, который мне нужно переместить строку, если значение в последнем столбце равно false. Я не знаю, как перейти на лист 2 и пропустить весь лист. Благодарим за помощь.Переместить строку на другой лист

Sub DeleteMatches2() 
    Dim a As Range, b As Range 
    Dim c As String 
    'The column that has the value is V2 
    With Sheets("Controle Estoque Fixo") 
     Set a = .Range(.Cells(2, "V"), .Cells(Rows.Count, "V").End(xlUp)) 
    End With 

    For Each b In a 
     If b.Value = "False" Then 
      Sheets("Sheet1").Select 
      'know I am lost 

     End If 
    Next 
End Sub 
+4

Вы искали SO? Здесь есть несколько примеров того, как это сделать. Кроме того, что вы * на самом деле пытались * скопировать строку на другой лист? –

+0

Быстро заметьте, также обязательно добавьте '.' перед' Rows.Count', когда вы 'Set a'. В следующей части вы просто захотите найти следующую строку в своем листе2 (используйте переменную), затем вы можете вырезать/вставить. Есть много примеров того, что вы просите здесь, поэтому просто используйте поле поиска. Я бы предложил использовать макрорекордер, вырезать/вставить и посмотреть, как выглядит этот код, и настроить там. – BruceWayne

+1

lol Мне нравится, как вы используете 'with', затем переходите к использованию' select' XD – findwindow

ответ

0

Есть много способов сделать это, проще всего сохранить счетчик строк, который отслеживает, сколько строк вы использовали на другом листе. Каждый раз увеличивайте этот счетчик на единицу. Давайте предположим, у вас есть заголовки столбцов на sheet1, поэтому первый доступный строка строка 2:

Sub DeleteMatches2() 

    Dim a As Range, b As Range 
    Dim c As String 
    Dim rowCounter As Long 

    rowCounter = 2 ' start at row 2 

    'The column that has the value is V2 
    With Sheets("Controle Estoque Fixo") 
     Set a = .Range(.Cells(2, "V"), .Cells(Rows.Count, "V").End(xlUp)) 
    End With 

    For Each b In a 
     If b.Value = "False" Then 
      'Sheets("Sheet1").Select ' you don't need to select an object to access it, so remove this 
      'here's the bit you need 
      Sheets("Controle Estoque Fixo").Rows(b.row).Cut Sheets("Sheet1").Rows(rowCounter) ' this cuts and pastes all in one line 
      ' you use the row counter to specify the destination 

      rowCounter = rowCounter + 1 ' the next time you'll paste on the next row 

     End If 
    Next 
End Sub 

Как люди отмечают, Есть много много много способов сделать это, чтобы иметь хороший взгляд на переполнение стека, что-то еще может Обращаюсь к вам.

Смежные вопросы