Помощь по условию в макросе для Word

Программирование на Visual Basic for Applications
baston
Начинающий
Начинающий
 
Сообщения: 16
Зарегистрирован: 13.09.2007 (Чт) 11:21

Помощь по условию в макросе для Word

Сообщение baston » 05.08.2008 (Вт) 12:37

Коллеги, не могу сообразить, как поставить правильно условие в следующем коде.

Код: Выделить всё
Sub poisk()
'Поиск слов в тексте и вывод в конце документа списка номеров страниц,
'где данные слова встречаются
Dim a As String, b As String
b = InputBox("Введите искомое слово", "Запрос искомого слова")
Selection.HomeKey wdStory

With Selection.Find
   .ClearFormatting
   .Replacement.ClearFormatting
   .Text = b
   .Forward = True
   .Wrap = wdFindStop
   .Execute
End With

If StrPtr(b) = 0 Then Exit Sub

While Selection.Find.Execute = True
   a = a & CStr(Selection.Information(wdActiveEndPageNumber)) & ", "
Wend


With Selection
   .EndKey Unit:=wdStory
   .InsertAfter vbCr
   .Collapse wdCollapseEnd
   .TypeText a
End With
End Sub

Как видите, есть проверка на нажатие кнопки Отмена, но проблема с кнопкой ОК.
Мне нужно следующее:
1. Если форма пустая и пользователь нажал кнопку ОК в форме, то должно вывести сообщение и после закрытия сообщения вновь вернуться к форме. Сейчас же макрос все равно выполняется, так как ОК возвращает что-то.
Делал и так, и эдак - не получается.
Может, лучше функцию написать проверки нажатия кнопок в форме InputBox? И тогда ее можно будет использовать и в других проектах-макросах.
2. Как можно оптимизировать этот макрос?
Спасибо. Надеюсь на помощь.

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Сообщение Денис » 05.08.2008 (Вт) 12:46

так как ОК возвращает что-то

Воспользуйтесь Debug.Print
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

baston
Начинающий
Начинающий
 
Сообщения: 16
Зарегистрирован: 13.09.2007 (Чт) 11:21

Сообщение baston » 05.08.2008 (Вт) 15:40

Денис писал(а):
так как ОК возвращает что-то

Воспользуйтесь Debug.Print

Зачем? Мне нужно было условие, а не получение значения. Или я неправильно понял вас?
В любом случае я добавил функцию и реализовал код через нее. Получилось, но немного громоздко. Думаю, как теперь оптимизировать, если возможно.

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 05.08.2008 (Вт) 15:53

Ну а проверить Len(b), чтоб была не 0, как? :)
I don't understand. Sorry.

baston
Начинающий
Начинающий
 
Сообщения: 16
Зарегистрирован: 13.09.2007 (Чт) 11:21

Сообщение baston » 06.08.2008 (Ср) 10:13

Да. спасибо. Именно так и сделал и убрал функцию как лишнюю. Получилось очень неплохо.


Вернуться в VBA

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

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

    TopList