Страницы: 1
RSS
VBA. Удаление ячеек по условию, Нужно удалить ячейки, а не строки
 
Добрый день!

Кто-нибудь сталкивался с макросами по удалению ячеек по условию. В гугле нахожу макросу по удалению строк по условиям.
 
Отдельно ячейку удалить невозможно; можно либо строку, либо столбец, либо просто очистить ячейку.
 
Код
Sub Tablica()
Dim i As Long
Dim iLastRow As Long
 iLastRow = Cells(Rows.Count, 1).End(xlUp).Row
  For i = iLastRow To 2 Step -1
    If Cells(i, "A") = "яблоки" Or Cells(i, "A") = "груши" Then
      Cells(i, "A").Delete
    End If
  Next
End Sub
 
Kuzmich, спасибо!

Можно ли сделать так, чтобы макрос срабатывал когда находишься на другом листе одной и той же книги.
Сейчас ситуация следующая: макрос работает, если нахожусь на листе, где должны происходить изменения.И нет никаких изменений - если на другом листе?
 
Вам надо, чтобы макрос со всех листов убрал ячейки с яблоками и грушами в столбце А ?
Сделайте цикл по всем листам.
 
Цитата
Kuzmich написал:
Вам надо, чтобы макрос со всех листов убрал ячейки с яблоками и грушами в столбце А ?Сделайте цикл по всем листам.
Только с одного листа. Разобрался. Добавил "Sheets("Списки").Select"
Изменено: zelencov - 14.08.2018 17:16:57
 
Так макрос и убирает ячейки с яблоками и грушами в столбце А с одного листа
 
Как можно объединить 2 макроса в одном module:
Код
Sub Spiski_delete()
Sheets("Списки").Select
Dim i As Long
Dim iLastRow As Long
 iLastRow = Cells(Rows.Count, 11).End(xlUp).Row
  For i = iLastRow To 5 Step -1
    If Cells(i, "K") = "{10} Материальные затраты" Or Cells(i, "K") = "{50} Прочие затраты" Then
      Cells(i, "K").Delete
    End If
  Next
End Sub

Sub УПР_расходы_delete()
Sheets("Управленческие расходы").Select
Dim i As Long
Dim iLastRow As Long
 iLastRow = Cells(Rows.Count, 1).End(xlUp).Row
  For i = iLastRow To 16 Step -1
    If Cells(i, "A") = "{10} Материальные затраты" Or Cells(i, "A") = "{50} Прочие затраты" Then
      Cells(i, "A").ClearContents
    End If
  Next
End Sub
 
С какого листа вы запускаете макрос Sub Spiski_delete() ?
Есть ли у вас отдельная кнопка, по которой запускается макрос?
 
Кнопки отдельной не выводил. Запускаю через вкладку разработчик - макросы. Запуск произвожу на любом листе - заданные действия проходят там где и требуется.
 
Используйте конструкцию With......End With
В конец макроса Sub Spiski_delete() добавьте
Код
With Sheets("Управленческие расходы")
   iLastRow = .Cells(.Rows.Count, 1).End(xlUp).Row
  For i = iLastRow To 16 Step -1
   If .Cells(i, "A") = "{10} Материальные затраты" Or .Cells(i, "A") = "{50} Прочие затраты" Then
     .Cells(i, "A").ClearContents
   End If
  Next
End With
 
Еще вариант по теме, без "Or":
 
Всем спасибо за помощь! Все получилось.
Страницы: 1
Наверх