Консультация № 140960
29.07.2008, 10:18
0.00 руб.
0 4 2
Здравствуйте уважаемые эксперты!
Помогите, пожалуйста, с VBA для Excel 2003-2007. Необходим макрос чтобы он находил слово No difference и удалял эту строку, а также стоку выше этого слова и ниже этого слова.

Заранее спасибо.

Обсуждение

Неизвестный
29.07.2008, 15:41
общий
это ответ
Здравствуйте, Johnny2000!
Примерно вот так, но если нет "No difference" - удаляет выделенную строку. Надо немного доработать

Приложение:
Sub sss()
On Error GoTo 1:
Cells.Find(What:="No difference", After:=ActiveCell, LookIn:=xlValues, LookAt:= _
xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
, SearchFormat:=False).Activate
ActiveCell.Rows("1:1").EntireRow.Select
Selection.Delete Shift:=xlUp
ActiveCell.Rows("1:1").EntireRow.Select
Selection.Delete Shift:=xlUp
1: If Err = 91 Then GoTo 2
2: Selection.Delete Shift:=xlUp
End Sub
Неизвестный
29.07.2008, 16:35
общий
Здравствуйте Артем Владимирович! Спасибо за макрос, только Он что-то не находит эту строку, а только как раз и удаляет выделенную строку. Может, я что-то не то делаю " не силён в математике" Скопировал ваш код, открыл excel, alt+8, написал имя макроса, создать, вставил код, удалил, своё название макроса оставил ваше Sub sss(), кнопка сохранить, далее опять alt+8, выполнить. Удаляет только выделенную строку. I'm sorry, всё делает то, что надо. Находит и удаляет эту строку, а как сделать, чтобы удаляла на всём листе, где находит это слово, а не только одну строку. Извините ещё раз, пожалуйста. Т.е. есть слово No differences в одной строке в другой другое какое-то слово дальше опять No differences и т.д. Удаляет строку, где находит это слово на всём листе, а другие строки с другими словами не удаляет.
Неизвестный
31.07.2008, 03:27
общий
это ответ
Здравствуйте, Johnny2000!
В приложении код, который "находит слово No difference и удаляет эту строку, а также строку выше этого слова и ниже этого слова" на первом листе.
Единственно, в случае если No difference найдется в первой строке, возникнет ошибка, т.к. нет строки выше этой. Этот случай если надо, нужно предусмотреть.

Приложение:
Sub t()
Dim ws As Worksheet
Dim c As Range
Set ws = Worksheets(1)
Set c = ws.Cells.Find(What:="No difference")
While Not c Is Nothing
c.EntireRow.Offset(-1).Resize(3).Delete
Set c = ws.Cells.Find(What:="No difference")
Wend
End Sub
Неизвестный
31.07.2008, 10:36
общий
Здравствуйте HookEst! Спасибо за макрос! Выполняет то, что и написано было. Ещё раз спасибо!
Форма ответа