Ошибка несоответствия типов с оператором if then - PullRequest
0 голосов
/ 30 октября 2019

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

If Columns("K:K") = "Declined" Or "Void" Then

    Selection.Delete Shift:=x1Up

End If

Ответы [ 2 ]

0 голосов
/ 30 октября 2019

вы можете проходить через ваши клетки и удалять строки. Я бы полностью квалифицировал ваш лист и постарался избежать использования ActiveSheet. В приведенном ниже примере мы идем снизу вверх, чтобы не пересматривать ячейки дважды и не настраивать счетчик приращений.

Dim i As Long
Dim iUsedRange As Long

iUsedRange = ActiveSheet.UsedRange.Rows.Count
For i = iUsedRange To 1 Step -1
    If ActiveSheet.Cells(i, 11).Value = "Declined" Or ActiveSheet.Cells(i, 11).Value = "Void" Then
        ActiveSheet.Cells(i, 11).EntireRow.Delete Shift:=x1Up
    End If

Next i
0 голосов
/ 30 октября 2019

Вместо этого вам нужно перебрать свой диапазон. Один из способов сделать это:

Sub t()
Dim rng As Range, curCel As Range
Dim i As Long
Set rng = Range("K1:K100") ' Change as needed
For i = rng.Cells(rng.Rows.Count, 1).Row To rng.Cells(1, 1).Row Step -1
    Set curCel = Cells(i, rng.column)
    If curCel.Value = "Declined" or curCel.value = "Void" Then
        curCel.EntireRow.Delete
    End If
Next i
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...