Я пытаюсь удалить все столбцы на листе, которые содержат определенный текст в своих верхних строках.Тот же самый код с только окраской Cell.EntireColumn ячейки, которая соответствует тексту, работает отлично.
Делать это задом наперед не помогло.Установка нового диапазона, а затем удаление всего столбца работает, но мне приходится запускать код несколько раз, пока он не удалит все столбцы.
For Each Cell in newRange
Cell.EntireColumn.Delete
В противном случае, когда я сделаю это с циклом выполнения, я получуошибка в конце.
Dim Cell As Range
Dim Source As Range
Set Source = Range(Cells(1, 1), Cells(1, Columns.Count))
Dim strWords As Variant
strWords = Array("Number", "First Name")
For Each Cell In Source
For i = UBound(strWords) To LBound(strWords) Step -1
If InStr(UCase(Cell), UCase(strWords(i))) > 0 Then
Cell.EntireColumn.Delete
Next i
Next
End Sub
В этой строке в самом первом цикле я получаю сообщение об ошибке: «Ошибка времени выполнения 424»: требуется объект »
If InStr(UCase(Cell), UCase(strWords(i))) > 0 Then
Обновление: Добавление значений в диапазон работает отлично, и увеличение скорости заметно с большими файлами.Спасибо всем за участие!
Еще одна вещь, которую мне нужно сделать, была бы
If InStr(UCase(Cell), UCase(strWords(i))) 'is not in string Then
'Add to a union that will later be deleted
Я попробовал этот, но он удалил бы все столбцы вместо тех, которые не содержат один изструны.
If InStr(UCase(Cell), UCase(strWords(i))) = 0