Excel! Листы скрываются раньше чем нужно

Программирование на Visual Basic for Applications
M@SKIT
Новичок
Новичок
 
Сообщения: 42
Зарегистрирован: 10.04.2006 (Пн) 11:10
Откуда: Одесса

Excel! Листы скрываются раньше чем нужно

Сообщение M@SKIT » 11.01.2007 (Чт) 19:30

Вопрос! в Excel 2003 в событии Workbook_beforeclose написана процедура которая скрывает листы после завершения работы с книгой. Но листы скрываются сразу после нажатия на кнопку закрытия окна, а потом выскакивает диалоговое окошко "сохранить изменения" да/нет/отмена. Но если это было случайное нажатие на кнопку или пользователь передумал выходить из рабочей книги то что делать? Как сделать так чтобы листы скрывались после подтверждения или отклонения сохранения?

Genyaa
Обычный пользователь
Обычный пользователь
 
Сообщения: 59
Зарегистрирован: 17.10.2006 (Вт) 13:46

Сообщение Genyaa » 11.01.2007 (Чт) 22:55

Перенесите код скрытия листов из beforeclose в Workbook_WindowDeactivate или Workbook_Deactivate, а в beforeclose вставьте активацию (эмуляцию) возможного диалога (Сохранить/нет/отмена) без реальных действий. Полученные ответы пользователя обработайте уже в Deactivate соответственным образом.
Всякое решение плодит новые проблемы.

Димитрий
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 194
Зарегистрирован: 26.01.2005 (Ср) 22:47
Откуда: Волгоград

Сообщение Димитрий » 11.01.2007 (Чт) 23:02

Можно так:

Код: Выделить всё
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim i As Long
    i = MsgBox("Сохраняем?", vbYesNoCancel)
    If i = vbCancel Then
        Cancel = True
    Else
'********************
'Здесь скрываем листы
'********************
        If i = vbYes Then
            ThisWorkbook.Save
        Else: ThisWorkbook.Saved = True
        End If
    End If
End Sub

[/code]

M@SKIT
Новичок
Новичок
 
Сообщения: 42
Зарегистрирован: 10.04.2006 (Пн) 11:10
Откуда: Одесса

Сообщение M@SKIT » 15.01.2007 (Пн) 17:55

Спасибо Димитрий за подсказку, а с первым вариантом не получится - при переходе от Workbook1 к WorkBook2 тоже происходит событие Deactivate, было бы очень не удобно при работе с несколькими рабочими книгами, при переходе между ними, каждый раз отвечать на диалог.


Вернуться в VBA

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

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

    TopList