Не закрывается книга после выполнения Workbook_BeforeClose

Программирование на Visual Basic for Applications
echo
Обычный пользователь
Обычный пользователь
 
Сообщения: 62
Зарегистрирован: 26.01.2005 (Ср) 8:25
Откуда: Хабаровск

Не закрывается книга после выполнения Workbook_BeforeClose

Сообщение echo » 21.06.2005 (Вт) 1:40

Office 97
Имеется вот такой код
Код: Выделить всё

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Sheets(" ").Cells(4, 3) = Sheets("otch").Cells(4, 3)
    Sheets(" ").Cells(4, 4) = Sheets("otch").Cells(4, 4)
    Application.DisplayAlerts = False
     If ActiveSheet.Name = "otch" Then
    Sheets("ОБРАЗЕЦ").Activate
     End If
    Worksheets("otch").Delete
    ThisWorkbook.Save
    Application.DisplayAlerts = True
End Sub

Все инструкции выполняются нормально, но книга в итоге не закрывается. Сходил посмотрел, что пишут у Билла Гейтса. Вроде есть такая проблема. http://support.microsoft.com/default.aspx?scid=kb;en-us;177688 Говорят что если удалить в Workbook_BeforeClose активный лист, тогда книга не закрывается, но я то удаляю НЕАКТИВНЫЙ!

Может кто-нибудь подсказать как обойти такую проблемку?
Душа болит... А лечишь её - печень болит!

a_mayor
Новичок
Новичок
 
Сообщения: 41
Зарегистрирован: 02.06.2005 (Чт) 21:44

Сообщение a_mayor » 21.06.2005 (Вт) 9:05

Офис 2003, закрывается, как часы :D
А попробуй в конце процедурки написать ThisWorkbook.Close.

echo
Обычный пользователь
Обычный пользователь
 
Сообщения: 62
Зарегистрирован: 26.01.2005 (Ср) 8:25
Откуда: Хабаровск

Сообщение echo » 21.06.2005 (Вт) 9:22

a_mayor писал(а):А попробуй в конце процедурки написать ThisWorkbook.Close.


в процедуре BeforeClose написать ThisWorkbook.Close :lol: nothing personal
Душа болит... А лечишь её - печень болит!

a_mayor
Новичок
Новичок
 
Сообщения: 41
Зарегистрирован: 02.06.2005 (Чт) 21:44

Сообщение a_mayor » 21.06.2005 (Вт) 9:42

Ну, не хочешь пробовать, тогда в процедурке пиши сообщение юзеру: Плиз, не серчайте, если книжка не хочет сама закрываться, у нас старенький офис! 8)

echo
Обычный пользователь
Обычный пользователь
 
Сообщения: 62
Зарегистрирован: 26.01.2005 (Ср) 8:25
Откуда: Хабаровск

Сообщение echo » 21.06.2005 (Вт) 9:49

ты сам то пробовал? и что у тебя получилось?
Душа болит... А лечишь её - печень болит!

a_mayor
Новичок
Новичок
 
Сообщения: 41
Зарегистрирован: 02.06.2005 (Чт) 21:44

Сообщение a_mayor » 21.06.2005 (Вт) 10:38

Я же ясно сказал, что в Офисе 2003 закрывается :wink:

a_mayor
Новичок
Новичок
 
Сообщения: 41
Зарегистрирован: 02.06.2005 (Чт) 21:44

Сообщение a_mayor » 21.06.2005 (Вт) 12:53

ThisWorkbook.Close вызовет повторно Workbook_BeforeClose. Отреагируй на это так (буленовым ключом):

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

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Static blClose As Boolean
   
   
   
    If Not blClose Then
        blClose = True
       
        'здесь твой код

        Cancel = True 'для уверенности, что не сдвоит
        ThisWorkbook.Close
        Exit Sub
    End If
End Sub


Вернуться в VBA

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

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

    TopList