2011-09-15 93 views
1

当我的vba代码运行并修改excel工作表时,有没有办法锁定excel表单被用户修改?VBA如何“锁定”Excel工作表

+1

我会好奇你是否可以构建一个宏*允许*用户在宏运行时修改工作表数据! –

+0

我想知道与idevelop相同的东西,你是否在等待定时器或类似的东西? – Reafidy

回答

4

如果你的代码是活动的,那么我不知道为什么用户在同一时间修改数据的能力 - 要显示的宏沙漏渲染互动不可能

你能请发布您的代码?

选项,你可以考虑包括

  1. 添加一个进度条,让用户知道有事情发生(代码运行,即不玩),以及多久没有去 从Walkenbach这个例子而工作发生

    Application.Visible = False 
    'code 
    Application.Visible = True 
    
是有用 http://spreadsheetpage.com/index.php/tip/displaying_a_progress_indicator/
  • 使Excel应用程序无形

  • 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