gpt4 book ai didi

vba - Excel 工作表触发器和事件

转载 作者:行者123 更新时间:2023-12-02 22:49:09 25 4
gpt4 key购买 nike

在我的一本工作簿中,我同时使用 Worksheet_Activate() 触发器和 Workbook_SheetActivate 触发器。我使用后者作为覆盖处理程序来控制哪些用户可以查看哪些工作表。使用以下内容:

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 触发器之前触发。有没有办法改变它们的触发顺序?

最佳答案

由于事件是从“最小”对象(在 Excel 对象模型中)到“最大”对象(工作表到应用程序)触发的,因此您无法更改事件触发的顺序。

但是,您可以按照该顺序工作来实现您的目标,正如 @MacroMan 在测试 Worksheet 的示例中所述,该工作表导致了 Change Event Workbook_SheetChange 事件。

请参阅 Chuck Pearson 的教程 Events了解更多信息。

关于vba - Excel 工作表触发器和事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34001344/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com