|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
12.12.2010, 17:05 | #1 |
Пользователь
Регистрация: 04.12.2010
Сообщений: 19
|
Прекращение выполнения макроса
Имеется код:
Sub Второстепеный(параметр) Dim index ... If index=15 then Exit Sub End if ... End Sub Sub Основной() ... Call Второстепенный(параметр) ... End Sub Согласно коду при index=15 прекращается дальнейшее выполнение макроса Второстепенный(), а мне нужно чтоб прекращалось выполнение макроса Основной(). То есть мне нужно прекратить выполнение программы, если в подпрограмме достигается какое-то условие. Подскажите пожалуйста. |
12.12.2010, 17:13 | #2 |
Пользователь
Регистрация: 11.04.2009
Сообщений: 29
|
Можно обьявить переменную index в Sub Основной и передать ее во второстепенный. А в основном поставить условие
|
12.12.2010, 17:28 | #3 |
Пользователь
Регистрация: 04.12.2010
Сообщений: 19
|
Такой вариант не подходит. Дело в том, что условие прекращение макроса основывается на переменой, объявленной и изменяемой в подпрограмме Второстепенный(). Код может содержать большое кол-во подпрограмм...второстепенных и третьестепенных. И вот при достижении какого-то условия, допустим в третьестепенной подпрограмме необходимо не просто выйти из подпрограммы, а прекратить выполнение макроса вообще. Exit Sub прекращает выполнение Sub'а в котором он вызван. А вот есть ли такой Exit который остановит выполнение модуля, вне зависимости откуда он был вызван?
|
12.12.2010, 17:37 | #4 |
Новичок
СтарожилДжуниор
Регистрация: 05.02.2008
Сообщений: 9,487
|
Function Второстепеный(параметр) as boolean
Dim index Второстепеный = False ... If index=15 then Exit Sub End if ... Второстепеный = True End Function Sub Основной() ... if not Второстепенный(параметр) then Exit Sub ... End Sub
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
|
12.12.2010, 17:49 | #5 |
Пользователь
Регистрация: 04.12.2010
Сообщений: 19
|
Хмм..только так, да? То есть такой команды нет и приходится выдумывать способы реализовать через Exit Sub. Плохо. Я думал что есть что-то вроде Quit. Жаль.
В любом случае спасибо. Кстати, IgorGO у вас ошибка кажися. Я так понимаю вы имели ввиду следующее: Function Второстепеный(параметр) as boolean Dim index Второстепеный = False ... If index=15 then Второстепеный = True End if ... End Function Но такой вариант всё равно мну не устраивает. У меня в модуле очень много подпрограмм и в большей части нужно реализовать условие выхода из программы. Плюс многие подпрограммы работают с листами и ячейками, а Function это делать не хочет. Последний раз редактировалось AesmaDiv; 12.12.2010 в 17:55. |
12.12.2010, 18:23 | #6 |
Новичок
СтарожилДжуниор
Регистрация: 05.02.2008
Сообщений: 9,487
|
нет, я имел ввиду то, что написал.
Function Второстепеный(параметр) as boolean Dim index Второстепеный = False ... If index=15 then Exit Function End if ... Второстепеный = True End Function а было Exit Sub - вот это ошибка обратили внимание, что в ОСНОВНОЙ: if not Второстепенный(параметр) then Exit Sub а не Call Второстепенный(параметр) как было у Вас
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
Последний раз редактировалось IgorGO; 12.12.2010 в 18:32. |
12.12.2010, 18:30 | #7 | |
Новичок
СтарожилДжуниор
Регистрация: 05.02.2008
Сообщений: 9,487
|
Цитата:
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Время выполнения макроса... | nikolai_P | Microsoft Office Excel | 9 | 03.04.2013 00:59 |
Прекращение выполнения функции через N-ое количество тактов | AlterX | Общие вопросы C/C++ | 9 | 23.05.2010 17:33 |
Пауза выполнения макроса | artclon | Microsoft Office Excel | 3 | 09.02.2010 05:13 |
Как сократить время выполнения макроса? | Алексей11111 | Microsoft Office Excel | 11 | 01.12.2009 20:04 |
скрыть процесс выполнения макроса | Iskin | Microsoft Office Excel | 1 | 21.11.2008 07:28 |