VBA如何“locking”Excel表

有没有办法lockingexcel表被用户更改,而我的vba代码运行并修改excel工作表?

如果你的代码是活动的,那么我不知道为什么用户有能力同时修改数据 – macros观沙漏应该显示渲染交互不可能

你能发表你的代码吗?

您可能考虑的选项包括

  1. 添加一个进度条,让用户知道正在发生的事情(即不要在代码运行时播放),以及需要多长时间Walkenbach的这个例子很有用http://spreadsheetpage.com/index.php/tip/ displaying_a_progress_indicator /
  2. 使Excel应用程序在工作发生时不可见

    Application.Visible = False 'code Application.Visible = True 

来自Excel 2003 …保护工作表没有额外的行动将阻止用户input VBA操作。 为了防止用户与locking的单元格交互,但仍然允许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