我想要为所有用户自动运行Sub WorkSheet_Change(ByVal Target As Range)
。问题是这些用户在输入数据时几乎不知道或懒得启用宏。有没有办法强制宏自动在这个工作簿上运行?我看过一篇关于名为Workbook_Open ()
的事件的文章,但我不知道如何使用它。有什么帮助吗?
答案 0 :(得分:1)
出于安全原因,您无法在没有用户明确输入的情况下强制工作簿启用宏。
您可以做的是设置用户需要隐藏的所有工作表。然后创建一个只有文本框的可见工作表或者说“#34;请启用宏以继续。”#34;然后使用Workbook_Open
事件隐藏该工作表并取消隐藏其他工作表。
此外,当用户保存电子表格时,使用Workbook_BeforeSave
事件重新隐藏工作表,因此每次都必须执行检查。
其他提示:使用VBA隐藏工作表时,请尝试使用xlSheetVeryHidden
与xlSheetHidden
。这意味着用户无法像普通的隐藏表那样将他们从excel中取消隐藏(因此您可以避免使用该漏洞的顽固用户)。
编辑:这里有一些示例代码,当然还有虚构的工作表名称:
Private Sub Workbook_AfterSave(ByVal Success As Boolean)
Worksheets("Data1").Visible = xlSheetVisible
Worksheets("Data2").Visible = xlSheetVisible
Worksheets("Welcome").Visible = xlSheetVeryHidden
End Sub
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Worksheets("Welcome").Visible = xlSheetVisible
Worksheets("Data1").Visible = xlSheetVeryHidden
Worksheets("Data2").Visible = xlSheetVeryHidden
End Sub
Private Sub Workbook_Open()
Worksheets("Data1").Visible = xlSheetVisible
Worksheets("Data2").Visible = xlSheetVisible
Worksheets("Welcome").Visible = xlSheetVeryHidden
End Sub