Здесь могут быть три вещи.
Во-первых, вы должны смотреть на значение ячейки явно, если вы тестируете эквивалентности для базового значения:
If (Range("A1").Offset(x,0).Value = True) Then
Без saying.Value, я думаю, что ячейка по умолчанию возвращает это свойство Text для тесты эквивалентности с недиапазонным свойством.
Во-вторых, ваши клетки, вероятно, содержат строку «True», а не значение True
так попробуйте использовать
If (Range("A1").Offset(x,0).Value = "True") Then
Наконец, если вы на самом деле найти строку и удалить его, то ваш будет фактически конец (строка 5 становится строкой 4 и т. д.), но вы также просто увеличили x, поэтому вы будете пропускать строку сразу после каждой удаленной строки , Чтобы это исправить, либо цикл в порядке убывания:
For x=lastrow to 8 step -1
или не увеличивают х, если вы только что удалил строку:
If (Range("A1").Offset(x,0).Value = "True") Then
Range("A1").Offset(x,0).EntireRow.Delete
Else
x = x + 1
EndIf
Спасибо большое!Прямо на всех трех моментах, ха-ха. –