проблема с макросом в Word

Программирование на Visual Basic for Applications
Андрей Васюта
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 91
Зарегистрирован: 20.07.2004 (Вт) 19:40

проблема с макросом в Word

Сообщение Андрей Васюта » 29.05.2006 (Пн) 7:50

Подскажите в чем ошибка.
Есть код
Осуществляется последовательный перебор символов текста и нахождение позиций, где сразу после запятой начинается следующее слово. Если такая позиция найдена, то после запятой вставляется пробел.

Sub insert()
Dim n As Byte
Dim c1, c2, с3 As Characters
ActiveDocument.Bookmarks("\startOfDoc").Select
Do
c1 = Selection.Text
n = Selection.Move(unit:= wdCharacter, Count:=1)
c2 = Selection.Text
If c1 = ", " And c2 <> " " Then Selection.InsertBefore " "
Loop Until WordBasic. CmpBookmarks("\sel", "\EndOfDoc") = 0
End Sub

Мне нужно внести в него изменения так, чтобы удалялись также и
пробелы перед запятой
Я пишу

Sub insert()
Dim n As Byte
Dim c0, c1, c2, c3 As Characters
ActiveDocument.Bookmarks("\startOfDoc").Select
Do
c0 = Selection.Text
c1 = Selection.Text
n = Selection.Move(Unit:=wdCharacter, Count:=1)
c2 = Selection.Text
If c0 = " " Then Selection.Delete Count:=-1
If c1 = ", " And c2 <> " " Then Selection.InsertBefore " "
Loop Until WordBasic.CmpBookmarks("\sel", "\EndOfDoc") = 0
End Sub

оно мне все пробелы удаляет , даже те что ставятся после запятой.
Если такой код

Sub insert()
Dim n As Byte
Dim c0, c1, c2, c3 As Characters
ActiveDocument.Bookmarks("\startOfDoc").Select
Do
c0 = Selection.Text
c1 = Selection.Text
n = Selection.Move(Unit:=wdCharacter, Count:=1)
c2 = Selection.Text
If c0 = " " And c1 = ", " Then Selection.Delete Count:=-1
If c1 = ", " And c2 <> " " Then Selection.InsertBefore " "
Loop Until WordBasic.CmpBookmarks("\sel", "\EndOfDoc") = 0

End Sub

То пробелы после запятой ставит , а перед запятой не удаляет
[/syntax]
Большой программе - большие глюки.

uhm
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1597
Зарегистрирован: 02.12.2004 (Чт) 15:21

Сообщение uhm » 29.05.2006 (Пн) 9:16

c0 = Selection.Text
c1 = Selection.Text

Уж не в том ли проблема, что у тебя эти две переменные тождественно равны? :)
Быть... или не быть. Вот. В чём вопрос?

Nicky
Постоялец
Постоялец
 
Сообщения: 519
Зарегистрирован: 12.08.2004 (Чт) 12:14

Сообщение Nicky » 29.05.2006 (Пн) 10:08

1. Заменить двойные пробелы (а также тройные и т.д.) на одинарные
2. Заменить , на ,<пробел>
3. Заменить <пробел>, на ,
4. Заменить двойные пробелы (а также тройные и т.д.) на одинарные

Андрей Васюта
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 91
Зарегистрирован: 20.07.2004 (Вт) 19:40

Сообщение Андрей Васюта » 29.05.2006 (Пн) 20:22

Это полностью переделать весь код прийдется, а мне нужно в этом коде просто добавить нужные действия......
Большой программе - большие глюки.


Вернуться в VBA

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

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

    TopList