Как продолжить выполнение кода со следующей строки?

Программирование на Visual Basic for Applications
kminas
Бывалый
Бывалый
 
Сообщения: 234
Зарегистрирован: 31.10.2005 (Пн) 20:17
Откуда: Ростов-на-Дону

Как продолжить выполнение кода со следующей строки?

Сообщение kminas » 07.02.2008 (Чт) 10:09

Каким оператором, при отсутствии ошибки, можно продолжить выполнение кода со следующей строки?
Константин

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

Сообщение Денис » 07.02.2008 (Чт) 10:32

при отсутствии ошибки код выполняется строка за строкой автоматически. :lol:
Ну а при возникновении ошибки в строке, она игнорируется, если в начале функции есть инструкция On Error Resume Next

Если же у тебя в функции есть обработка ошибок, то
Resume - возвращает на строку, где возникла ошибка,
Resume Next - возвращает на строку, следующую за строкой, где возникла ошибка.

Под обработкой ощибок подразумевается такая примерно конструкция:
Код: Выделить всё
sub RoutineName

On Error Goto RoutineName_Err_Handler

... код

On Error Goto0
exit sub

RoutineName_Err_Handler:

... обработка ошибок
if что-то then Resume
if что-то еще then Resume Next

end sub
Последний раз редактировалось Денис 07.02.2008 (Чт) 10:41, всего редактировалось 1 раз.
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

kminas
Бывалый
Бывалый
 
Сообщения: 234
Зарегистрирован: 31.10.2005 (Пн) 20:17
Откуда: Ростов-на-Дону

Сообщение kminas » 07.02.2008 (Чт) 10:41

Это не совсем то. ОШИБКИ НЕТ!
Я хочу выяснить, например, правильное ли число ввел пользователь в TextBox и спрашиваю его об этом. Если ошибка, то он нажимает НЕТ и возвращается в TextBox, а если все правильно и пользователь нажал ДА, программа должна идти дальше. Кроме GoTo ничего не знаю. А это, говорят, не лучший оператор.
Константин

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

Сообщение Денис » 07.02.2008 (Чт) 10:45

Гспди! Ну и постановка вопроса...

Код: Выделить всё
dim Reslt as integer

Reslt = msgbox("Ага?", vbYesNo, "Угу")

if reslt = vbYes then
   'Делаем что-то
else
   'Делаем нечто
end if
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

kminas
Бывалый
Бывалый
 
Сообщения: 234
Зарегистрирован: 31.10.2005 (Пн) 20:17
Откуда: Ростов-на-Дону

Сообщение kminas » 07.02.2008 (Чт) 10:50

Денис писал(а):Гспди! Ну и постановка вопроса...

Код: Выделить всё
dim Reslt as integer

Reslt = msgbox("Ага?", vbYesNo, "Угу")

if reslt = vbYes then
   'Делаем что-то
else
   'Делаем нечто
end if

У меня это все ЕСТЬ!
else
'Делаем нечто

Что это нечто.
Как перейти к следующей строке без GoTo?
Константин

mshak
Обычный пользователь
Обычный пользователь
 
Сообщения: 59
Зарегистрирован: 29.01.2008 (Вт) 14:17

Сообщение mshak » 07.02.2008 (Чт) 12:18

покажи кусок кода который ты пишешь...

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

Сообщение Денис » 07.02.2008 (Чт) 14:05

Вот необходимый и достаточный минимум, чтобы мессагой возвращать фокус обратно в текстбокс

Код: Выделить всё
sub Text1_lostfocus

dim Reslt as integer

Reslt = msgbox("Ага?", vbYesNo, "Угу")

if reslt = vbNo then
   Text1.SetFocus
end if

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

kminas
Бывалый
Бывалый
 
Сообщения: 234
Зарегистрирован: 31.10.2005 (Пн) 20:17
Откуда: Ростов-на-Дону

Сообщение kminas » 07.02.2008 (Чт) 14:47

Извините друзья, бес попутал. Код-то у меня похожий, но я не знал, как выйти из него при положительном ответе. Не надо ни-чеее-го делать. Например, как написал Денис
Код: Выделить всё
if reslt = vbNo then
   Text1.SetFocus
end if
. Спасибо всем.
Константин


Вернуться в VBA

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

Сейчас этот форум просматривают: Yandex-бот и гости: 78

    TopList