Как корректно завершить программу?

Программирование на Visual Basic for Applications
Mikhail
Начинающий
Начинающий
 
Сообщения: 12
Зарегистрирован: 31.07.2006 (Пн) 18:53

Как корректно завершить программу?

Сообщение Mikhail » 31.07.2006 (Пн) 19:13

VBA Excel.
По Worksheet_Calculate многократно запускается Static Sub, которая соответственно сохраняет значения своих переменных от раза к разу.
Как корректно завершить эту байду, чтобы при следующем запуске перменные проинициализировались?
Сейчас я программно чищу ту ячейку, по которой worksheet Calculate, но при следующем запуске (прописываю функцию в ту же ячейку) переменные в Static Sub иногда инициализируются, а иногда начинают работать со значениями от предыдущего запуска.
Подскажите как это сделать правильно? :roll:

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

Сообщение GSerg » 31.07.2006 (Пн) 19:46

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

Mikhail
Начинающий
Начинающий
 
Сообщения: 12
Зарегистрирован: 31.07.2006 (Пн) 18:53

Сообщение Mikhail » 31.07.2006 (Пн) 19:52

Дык переменные локальные... Как их снаружи Static Sub проинициализировать?

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

Сообщение GSerg » 31.07.2006 (Пн) 20:03

Первой командой той самой статической процедуры.


Или вынести на уровень модуля.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Mikhail
Начинающий
Начинающий
 
Сообщения: 12
Зарегистрирован: 31.07.2006 (Пн) 18:53

Сообщение Mikhail » 31.07.2006 (Пн) 20:19

GSerg писал(а):Первой командой той самой статической процедуры.


Или вынести на уровень модуля.

Так процедура запускается только когда в ячейке не пусто! И тогда надо чтобы она сохраняла переменные.
А как с уровня модуля?
Завести в процедуре флаг, при первом обращении из модуля инициализировать, при последующих делать то что надо?
Я надеялся, что есть более цивилизованный спопоб. Как то ведь Static Sub определяет правильное завершение программы, после которого все инициализируется

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

Сообщение GSerg » 31.07.2006 (Пн) 20:30

static sub определяет правильно начало, а не завершение.
Что разумно и правильно.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Mikhail
Начинающий
Начинающий
 
Сообщения: 12
Зарегистрирован: 31.07.2006 (Пн) 18:53

Сообщение Mikhail » 31.07.2006 (Пн) 20:33

Так как он его определяет?

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

Сообщение GSerg » 31.07.2006 (Пн) 20:42

Программно - никак. Компилятор это делает.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас


Вернуться в VBA

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

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

    TopList