Кое как на примерах наваял конструкцию с таймером на сохранение файла с MsgBox "Продолжить автосохранение ?" Да - продолжаем Нет - автосохранение прекращается до следующего запуска файла Но по кнопке MsgBox Нет выполнение автосохранения продолжается - почему и как можно сделать так чтоб процедура по таймеру прекратилась до след запуска ?
В модуле
Код
Public Flag As Boolean
Sub АвтосохранениеКнига()
Flag = True
'If Flag = True Then
'If Flag Then
If Flag Then
Application.OnTime Now + TimeValue("00:01:00"), "АвтосохранениеКнига" ' Автосохранение через заданный период времени
If MsgBox("Продолжить дальнейшие автосохранения файла?", vbYesNo + 32, "Предупреждение!") = vbNo Then
'Здесь действия при отрицательном ответе
Flag = False
Exit Sub
'Здесь действия при положительном ответе
Flag = True
End If
End If
Call Автосохранение_Архив_осн
End Sub
Код
Public Flag As Boolean
Private Sub Workbook_Open()
Flag = True
Call АвтосохранениеКнига 'сохраняем книгу по таймеру в каждые 15 мин
End Sub
В чем может быть дело - как этот таймер до перезапуска остановить ? Вроде Flag = False и Exit Sub есть но таймер все равно работает Далее если в начале кода модуля поставить If Flag Then просто или If Flag = True Then - вообще ничего не запускается - почему? тогда получается на открытие книги Flag = True не работает ? вобщем запутался я в этих флагах ...
If MsgBox("Продолжить дальнейшие автосохранения файла?", vbYesNo + 32, "Предупреждение!") = vbYes Then
'Здесь действия при положительном ответе
Flag = True
Else
'Здесь действия при отрицательном ответе
Flag = False
Exit Sub
End If
нет не помогло - все равно не отключается таймер (ошибка была else забыл) Почему при если в начале кода модуля поставить If Flag Then просто или If Flag = True Then - вообще ничего не запускается - почему? Сейчас тоже не запускается а если и запускается(если принудительно Flag=True в модуль втолкнуть в начале) то не останавливается. тогда получается на открытие книги Flag = True не работает ?
В книгу
Код
Public Flag As Boolean
Private Sub Workbook_Open()
Flag = True
Call АвтосохранениеКнига 'сохраняем книгу по таймеру в каждые 15 мин
End Sub
В модуль
Код
Public Flag As Boolean
Sub АвтосохранениеКнига()
'Flag = True
'If Flag = True Then
'If Flag Then
If Flag Then
Application.OnTime Now + TimeValue("00:01:00"), "АвтосохранениеКнига" ' Автосохранение через заданный период времени
If MsgBox("Продолжить дальнейшие автосохранения файла?", vbYesNo + 32, "Предупреждение!") = vbYes Then
'Здесь действия при положительном ответе
Flag = True
Else
'Здесь действия при отрицательном ответе
Flag = False
Exit Sub
End If
End If
Call Автосохранение_Архив_осн
End Sub
Понял где ошибка (при открытии книги ругается Compile error:Ambiguous name detected: Flag) была зарыта и почему
Код
Private Sub Workbook_Open()
Flag = True
ругалась на Flag (а в тестовых примерах все нормально работает)
1)у меня в рабочей книге
Код
Public Flag As Boolean
была обьявлена в нескольких модулях, тк там тоже Flag используется Получается Модуль1 Public Flag As Boolean - обьявлен Flag Модуль2 Public Flag As Boolean - обьявлен Flag Модуль3 Public Flag As Boolean - обьявлен Flag
2)Убрал текст Public Flag As Boolean из 2 и 3 модуля, оставил только в 1 - все заработало, книга открывается нормально и сохранение работает
3)Те если Flag работает в нескольких Модулях (макросах) то его обьявлять Public Flag As Boolean только в 1(одном) модуле - остальные его подхватят ?
Я же ещё в #6 предлагал Вам удалить объявление переменной в модуле книги. Да, достаточно в одном стандартном модуле - область действия такой переменной распространяется на весь проект.