2011-09-15 92 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