Макрос в Worde

Программирование на Visual Basic for Applications
Гена
Новичок
Новичок
 
Сообщения: 26
Зарегистрирован: 29.12.2003 (Пн) 16:37

Макрос в Worde

Сообщение Гена » 16.02.2004 (Пн) 13:44

Не могу записать макрос в Worde. Нужно по большой таблице по 3 колонке проверять строки и удалять ненужные. Т.е. нужно сделать запрос (фильтр), только в Worde. Пока ничего не получается.


Код: Выделить всё
Sub rt()

    Selection.Tables(1).Select
    Dim r As Range
    For Each r In Columns(3)
     If r.Text <> "Начальник" Then
         Selection.Rows.Delete
        End If
    Next
   
   
   
   
End Sub

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 17.02.2004 (Вт) 11:53

Код: Выделить всё
Sub rt()
  Dim i As Long
 
  With Selection.Tables(1)
    For i = .Rows.Count To 1 Step -1
      If Left$(.Cell(i, 3).Range.Text, 9) <> "Начальник" Then .Rows(i).Delete
    Next
  End With
End Sub
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Гена
Новичок
Новичок
 
Сообщения: 26
Зарегистрирован: 29.12.2003 (Пн) 16:37

Сообщение Гена » 17.02.2004 (Вт) 14:19

Спасибо больщое. Похоже.

Но, у меня почему-то все строки в таблице удаляет.
А что означает в коде цифра 9? Можна ли в if добавлять несколько условий, к примеру: что-бы оставалось в таблице строки с "Начальником" и "Заместитель"
P.S. Я только учусь в Worde, в Excele немного полегче.

Гена
Новичок
Новичок
 
Сообщения: 26
Зарегистрирован: 29.12.2003 (Пн) 16:37

Сообщение Гена » 17.02.2004 (Вт) 20:14

Получилось. Понял.
Как можна записать условие чтобы оставлялись еще пустые (без текста) строки (пустая ячейка в 3 колонке)?

Код: Выделить всё
If (Left$(.Cell(i, 3).Range.Text, 9) <> "Начальник" And Left$(.Cell(i, 3).Range.Text, 0) <> "") Then .Rows(i).Delete

Т.е что-то типа этого, ну здесь удаляет все.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 18.02.2004 (Ср) 11:09

Дело в том, что текест каждой ячейки таблицы оканчивается специальным символом, поэтому его нужно отсекать. Обобщим:
Код: Выделить всё
Sub rt()
  Dim i As Long
 
  With Selection.Tables(1)
    For i = .Rows.Count To 1 Step -1
      select case Left$(.Cell(i, 3).Range.Text, len(.Cell(i, 3).Range.Text)-1)
      case "Начальник", vbnullstring
        .Rows(i).Delete
      end select
    Next
  End With
End Sub
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 107

    TopList