Макро, который удаляет строку на листе на основе другого листа

У меня есть макрос, который объединяет значения на другом листе и на основе этих значений он должен вернуться на первый лист и удалить.

На листе это так: если значение на G2 это (ухаживать за linha), он получает номер строки на F2 и уходит, чтобы удалить предварительный просмотр строки. Иначе, идет к I2 и делает то же самое. Спасибо за помощь и время.

Лист

У меня это до сих пор:

Sub Delete() Range("G2").Select Do Until IsEmpty(ActiveCell) Range("G" & Rows.Count).Select If Range("G" & 2).Value = ("<<<Manter a linha") Then Sheets("Controle Estoque Fixo").Select Rows("2:5").Select Selection.EntireRow.Delete End If Loop 

РЕДАКТИРОВАТЬ:

 Dim r1 As Range, c As Range Dim s As String Dim v As String Dim k As String Dim t As String k = "1" Set r1 = Range(Cells(2, "H"), Cells(Rows.Count, "H").End(xlUp)) v = Sheets("Analise de Estoque").Cells(2, "G").Value For Each c In r1 If c.Text = ("<<<Manter a linha") Then Sheets("Controle Estoque Fixo").Select t = (v - 1) Rows(t).Select.Clear End If Next End Sub 

Теперь я могу вернуться и выбрать значение ячейки, которая содержит строку, которую я хочу сохранить, поэтому я добавляю «-1», чтобы выбрать до этого, но я попытался добавить попрошайничество и не работать (попробовал добавить T как строку и put = 1)

Вам нужно создать свой диапазон и сразу удалить все строки.

 Sub DeleteMatches() Dim r1 As Range, c As Range Dim s As String Set r1 = Range(Cells(2, "G"), Cells(Rows.Count, "G").End(xlUp)) For Each c In r1 If c = "<<<Manter a linha" Then If Len(s) Then s = s & "," s = s & "A" & c.Offset(0, -1) End If Next If Len(s) Then s = Left(s, Len(s) - 1) Sheets("Controle Estoque Fixo").Range(s).EntireRow.Delete End If End Sub 

Если вы хотите очистить строки и не удалить их, тогда вы можете сделать это по-своему.

 Sub DeleteMatches2() Dim r1 As Range, c As Range Dim t As String With Sheets("Analise de Estoque") Set r1 = .Range(.Cells(2, "H"), .Cells(Rows.Count, "H").End(xlUp)) End With For Each c In r1 If c.Text = "<<<Manter a linha" Then Sheets("Controle Estoque Fixo").Select t = c.Offset(0, -1) Rows(t).ClearContents End If Next End Sub Sub DeleteMatches3() Dim r1 As Range, c As Range Dim i As Long, LastRow As Long Dim t As String With Sheets("Analise de Estoque") LastRow = .Cells(Rows.Count, "H").End(xlUp) For i = 2 To LastRow If .Cells(i, "G").Text = "<<<Manter a linha" Then t = .Cells(i, "F").Text Sheets("Controle Estoque Fixo").Rows(t).ClearContents End If Next End With End Sub 

Просто помните, что когда вы удаляете строки, вам нужно перейти от последней строки к первой

  For i = LastRow To 2 Step - 1 Next 
Interesting Posts

DAX для подсчета количества заказов с n суммарными единицами

Неверная форма VBA останавливает функциональные клавиши

Импорт данных из Excel через приложение Silverlight

Sub, который вставляет слово Winner в колонку O

Отображать массивы без использования цикла в Excel VBA

Столбец поиска для значения и количества строк

Выделение активной ячейки в Microsoft Excel 2013, когда вы теряете фокус

Excel. Как определить число «A» в одном столбце на основе заданного диапазона дат в другом?

Массовое вложение таблиц Microsoft Excel в Microsoft Word

Экспорт XML из excel с использованием макросов для 65000 строк выше

Диапазон ISBLANK? Как проверить диапазон для того, чтобы быть пустым

Получение рабочего листа. Имя всех рабочих книг .xlsx внутри каталога.

Excel VBA – найдите соответствующие заголовки столбцов и удалите столбец

Как связать соединение с обновленной таблицей в VBA

Использование Visual Basic для копирования максимального условного массива с учетом изменения ссылок на ячейки

Давайте будем гением компьютера.