2015-11-30 3 views
3

В одной из моих книг я использую как триггер Worksheet_Activate(), так и триггер Workbook_SheetActivate. Я использую последний как обработчик верховой езды, чтобы контролировать, какие пользователи могут видеть, какие рабочие листы. Используя следующее:Триггеры Excel и события

Private Sub Workbook_SheetActivate(ByVal ws As Object) 
Dim HigherAccess As String 

HigherAccess = "Sheet1, Sheet2, Sheet3" 
If InStr(1, HigherAccess, ws.Name, vbTextCompare) > 0 Then 
    If UserList.Count = 0 Or ThisUser = "" Then Call UserDL 

     Application.EnableEvents = True 

     On Error GoTo err 

     If Not UserList.item(ThisUser)(7) = "Employee" Then 
      ThisWorkbook.Sheets(ws.Name).Activate 
     Else 
      ThisWorkbook.Sheets("Landing Page").Activate 
      MsgBox "You do not have permission to view this." & vbNewLine _ 
      & "If this is an error please contact xxxx" 
     End If 
End If 

Exit Sub 
err: 
    MsgBox "An Error has occurred. The application will now refresh" 
    ThisWorkbook.Sheets("Landing Page").Activate 
End Sub 

Моя проблема заключается в том, что триггер Worksheet_Acivate() кажется огонь до Workbook_SheetActivate один. Есть ли способ изменить порядок, в котором эти огоньки?

+0

Переместить код из 'Workbook_SheetActivate()' в начало 'Worksheet_Acivate()'? –

+0

@ OlleSjögren Но тогда мне пришлось бы повторить один и тот же код 5-10 раз, когда я мог бы обработать его на листе 'ThisWorkbook'? – Tom

+0

, если это действительно проблема, из-за которой срабатывает код. вы можете написать код в открытый Sub (в отдельном модуле), а затем просто вызвать код в каждом событии «Worksheet_Activate». –

ответ

0

Поскольку события с «наименьшего» объекта (в объектной модели Excel) запускаются с «самым большим» объектом (рабочий лист для приложения), вы не можете изменить порядок запуска событий.

Вы можете, однако, работа в таком порядке, чтобы достичь своих целей, а @MacroMan заявил своим примером тестирования Worksheet, вызвавшего Change Event в Workbook_SheetChange случае.

См. Учебник Чака Пирсона по телефону Events для получения дополнительной информации.

Смежные вопросы