Удалить строку на основе ключа поиска VBA

Я пытаюсь удалить каждую строку, в которой значение «X» найдено в столбце B, используя VBA. Однако у меня три проблемы:

  1. Я не могу заставить код VBA перейти от активной ячейки к следующей ячейке (B3) с помощью метода cell.find (см. Код ниже)
  2. Мой код не удаляет всю строку, где значение «X» найдено в столбце B
  3. Количество данных в столбце B может меняться: оно может закончиться на B10 сегодня или завтра B100 (см. Снимок экрана ниже)

Любая помощь будет высоко оценена.

Sub RemoveRows() Dim strLookFor As String Dim strRow As String Worksheets("Sheet1").Range("B2").Activate strLookFor = "X" strRow = Range("B2").Address Do Until ActiveCell.Value = "" MsgBox (ActiveCell.Value) If ActiveCell.Value = strLookFor Then Rows.Delete (strRow) End If strRow = Cells.Find(what:=strLookFor).Address Loop MsgBox ("Deleted all rows with value " & strLookFor) End Sub 

введите описание изображения здесь

Использование AutoFilter намного эффективнее, чем цикл диапазона

 Sub QuickCull() Dim ws As Worksheet Dim rng1 As Range Set ws = Sheets("Sheet1") Set rng1 = ws.Range(ws.[b2], ws.Cells(Rows.Count, "B").End(xlUp)) Application.ScreenUpdating = False With ActiveSheet .AutoFilterMode = False rng1.AutoFilter Field:=1, Criteria1:="X" rng1.Offset(1, 0).EntireRow.Delete .AutoFilterMode = False End With Application.ScreenUpdating = True End Sub 
 dim x as long dim r as long dim sht as worksheet set sht = Worksheets("Sheet1") r = sht.Cells(rows.count,2).end(xlup).row for x = r to 2 step -1 with sht.cells(x,2) if .value = "X" then .entirerow.delete end with next x 

Это должно работать:

 Sub DeleteRowsWithX() maxRow = ActiveSheet.UsedRange.Rows.Count For i = 1 To maxRow Do While (StrComp(ActiveSheet.Cells(i, 2).Text, "X", vbTextCompare) = 0) Rows(i).Select Selection.Delete Shift:=xlUp Loop Next End Sub 
  • Изменить формат даты с помощью замены или замены
  • Excel: двухцветные цветовые шкалы
  • Установка автоматической фильтрации нескольких подстановочных знаков
  • Как сравнить две фигуры?
  • MySQL для EXCEL (2010) - пользовательский запрос выбора
  • Индикатор выполнения в VBA Excel
  • Макрос для экспорта таблиц MS Word в листы Excel
  • Как я могу создать функцию щелчка между подсказкой ввода-вывода A1-A10 для ввода пользователем чисел в vba
  • Создание документов Word (в Excel VBA) из серии шаблонов документов
  • Как скопировать данные из закрытых книг (их закрытие) в основную книгу с помощью VBA
  • Разделить строку на массив символов?
  • Давайте будем гением компьютера.