答案 0 :(得分:2)
您可以创建公共变量CurrentSheet
,在Workbook_Open事件中将其初始化为ActiveSheet
,然后在工作簿的SheetActivate
事件中更新{{1}的值或者切换回上一个当前工作表并显示用户表单。类似于(在CurrentSheet
代码表中):
Workbook
开启编辑:为了安全起见,您还可以添加以下代码。如果某些事情导致您的项目在Public CurrentSheet As Worksheet
Private Sub Workbook_Open()
Set CurrentSheet = ActiveSheet
End Sub
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
If Sh.Name = "Administrator" Then
CurrentSheet.Activate
UserForm1.Show
Else
Set CurrentSheet = Sh
End If
End Sub
事件后重置,则会增加一层保护。在原始代码中,当我在激活Administrator之前故意重置项目时,我能够生成崩溃。
Workbook_Open
这可能会使Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
Set CurrentSheet = Sh
End Sub
中的代码变得多余,但我个人会保留它,因为我不喜欢使用未初始化的全局变量,即使它们在我使用它们之前会被初始化。另外 - 如果工作簿在管理员中打开(可能是某些错误情况),这将保证Workbook_Open
具有值。