Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Обработка события Workbook_Activate в Exel. / 4 сообщений из 4, страница 1 из 1
02.06.2006, 12:51:54
    #33768464
Oleg_Slip
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обработка события Workbook_Activate в Exel.
Помогите пожалуйста решить проблему: почему, когда одновременно открыты 2 книги, я выхожу из одной посредством обработки щелчка на кнопке
Код: plaintext
1.
2.
3.
Private Sub exit_cBtn_Click()
          ThisWorkbook.Close
End Sub
и событие Workbook_Activate() оставшейся книги не происходит, а в случае когда я просто закрываю окно в оставшейся книге данное событие происходит?
...
Рейтинг: 0 / 0
02.06.2006, 15:09:47
    #33769014
Ashton
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обработка события Workbook_Activate в Exel.
Код: plaintext
1.
2.
3.
4.
5.
Private Sub CommandButton1_Click()
    Workbooks( 2 ).Activate
    ' Или так.
    'Workbooks("Book2.xls").Activate
    ThisWorkbook.Close
End Sub

Полная статья, описывающая эту проблему.

XL2000: Workbook_Activate Event Does Not Fire When Driven Programmatically .
...
Рейтинг: 0 / 0
02.06.2006, 16:26:33
    #33769404
Oleg_Slip
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обработка события Workbook_Activate в Exel.
Спасибо за помощь. Я пробовал почти также:
Код: plaintext
1.
2.
3.
4.
5.
6.
Private Sub exit_cBtn_Click()
           
  ThisWorkbook.Close
  Workbook( 1 ).Activate  

End Sub
Но не помогло.
Ваш вариант мне немного не подходит, так как я должен динамически определить, какую книгу закрыть.
Я попробовал так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
Private Sub exit_cBtn_Click()
  
  Dim qqq As Workbook
  
  If Application.Workbooks.Count =  2  Then
  
    For Each qqq In Application.Workbooks
    
       If qqq.Name <> ThisWorkbook.Name Then qqq.Activate
       
    Next qqq
      
  End If
         
  ThisWorkbook.Close
End Sub
Но случилась другая беда. Дело в том, что я добавляю новый пункт меню так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
Function AddItemToMenu(CBarName As String, CapS As String, NameMacro As String, _
                  Optional BGroup As Boolean, Optional HotKey As String) As Integer
   
   Set NewItem = Application.CommandBars(CBarName).Controls.Add(Type:=msoControlButton, temporary:=True)
   With NewItem
        .Style = msoButtonCaption
        .Caption = CapS
        If Not IsMissing(BGroup) Then .BeginGroup = BGroup
        .onAction = "'" & ActiveWorkbook.name & "'!" & NameMacro
        AddItemToMenu = .Index
   End With
   If Not IsMissing(HotKey) Then _
             Application.MacroOptions Macro:="'" & ActiveWorkbook.name & "'!" & NameMacro, _
                                                HasShortcutKey:=True, ShortcutKey:=HotKey
      'HotKey=Ctrl+Shift+HotKey
End Function
это функция из моей библиотеки, стандартная, и поскольку однозначным идентификатором пункта меню является его индекс, я его для каждой книги запоминаю, чтобы в обрабочиках Workbook_Activate и Workbook_Deactivate скрывать и показывать пункт именно этой книги. Но теперь переменная, в которой хранится индекс обнуляется, и соответственно при Workbook_Deactivate пункт меню не скрывается. Можно было бы явно указывать индекс, но одновременно с моими книгами могут быть открыты и чужие со своими кнопками.
Вот, извиняюсь за обЪемный текст, прошу помочь еще.
...
Рейтинг: 0 / 0
02.06.2006, 18:43:45
    #33769921
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обработка события Workbook_Activate в Exel.
В принципе, после закрытия одной книги, другая автоматически становится активной, хоть ee событие Activate и не срабатывает, но она уже активная...
То есть чтобы закрыть самую верхнюю книгу и дернуть событие Workbook_Activate следующей, можно сделать так:
Код: plaintext
1.
    ActiveWorkbook.Close False
    Application.Run ActiveWorkbook.Name & "!Workbook_Activate"
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Обработка события Workbook_Activate в Exel. / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]