当我的vba代码运行并修改excel表时,有没有办法锁定excel表不被用户更改?
答案 0 :(得分:5)
如果您的代码处于活动状态,那么我不确定为什么用户可以同时修改数据 - 应该显示宏沙漏,使交互不可能
你能发布你的代码吗?
您可以考虑的选项包括
在工作正在进行时使Excel应用程序不可见
Application.Visible = False
'code
Application.Visible = True
答案 1 :(得分:2)
来自Excel 2003 ...在没有其他操作的情况下保护工作表将阻止用户输入和 VBA操作。为了防止用户与锁定的单元格进行交互但仍然允许VBA,您可以使用UserInterfaceOnly
属性。这只能通过VBA完成,无法以这种方式“手动”保护工作表。如果手动取消保护工作表,则会删除此属性。因此,最好在工作簿/工作表打开/激活事件上设置此属性,例如
Private Sub Workbook_Open()
Dim SH As Worksheet
' allow some non-destructive activities
For Each SH In ActiveWorkbook.Worksheets
SH.Protect DrawingObjects:=False, Contents:=True, UserInterfaceOnly:=True, _
AllowSorting:=True, AllowFiltering:=True, _
AllowUsingPivotTables:=True
Next SH
End Sub