Как установить диапазон, чтобы быть переменной столбца и удалить всю строку, если критерии выполнены VBA - PullRequest
0 голосов
/ 21 февраля 2020

У меня есть счетчик, который будет определять конкретный столбец c на основе имени заголовка. этот счетчик является переменной "k", и k = 5

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

У меня есть 2 проблемы: 1. Мой диапазон не установлен. Я не хочу жестко кодировать столбец диапазона 2. мой l oop не работает

Dim physicalstr As String
physicalstr = "Physical"
Dim physrange As Range
Set physrange = ShtTwo.Columns(k)

For Each cell In physrange
    If ActiveCell.Value = physicalstr _
    Then ActiveCell.EntireRow.Delete
Next cell

1 Ответ

0 голосов
/ 21 февраля 2020

Непосредственные проблемы с вашим кодом заключаются в том, что activecell никогда не назначается, никогда не изменяется и не упоминается в вашем l oop (что включает cell). Вам все равно не нужно активировать .

При удалении строк или столбцов вы должны l oop назад, чтобы избежать пропуска строк. Для l oop в обратном направлении проще использовать переменную-счетчик для вашего l oop, а не диапазона.

Кроме того, вам действительно нужно go через все миллионы строк? Попробуйте использовать Find или Autofilter для более эффективного кода.

Dim physicalstr As String
physicalstr = "Physical"
Dim physrange As Range
Set physrange = ShtTwo.Columns(k)
Dim r As Long

For r = physrange.Count To 1 Step -1
    If physrange.Cells(r).Value = physicalstr Then physrange.Cells(r).EntireRow.Delete
Next r
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...