2014-06-27 89 views
0

我有一個Excel工作表,列A到F由不同的用戶填寫。一旦一行完成,另一個用戶(控制用戶)在列G中輸入「done」。一旦用戶在coulmn G中輸入「done」,我想要一個VBA腳本來鎖定整行(列A到G),這樣沒有人能夠更改任何行條目。這有可能使用VBA腳本?使用VBA在Excel中鎖定行

+0

是否必須填寫* A1 *通過* F1 *的所有**? –

+0

不一定 – user969113

回答

2

我們必須開始與所有細胞沒有保護並鎖定片

工作表中的代碼區域中輸入以下事件宏

Private Sub Worksheet_Change(ByVal Target As Range) 
    Dim N As Long 
    N = Target.Row 
    If Intersect(Target, Range("G:G")) Is Nothing Then Exit Sub 
    If Target.Text <> "Done" Then Exit Sub 
    ActiveSheet.Unprotect 
     Range("A" & N & ":G" & N).Locked = True 
    ActiveSheet.Protect 
End Sub 

因爲它是工作表的代碼,它很容易安裝和自動使用:

  1. 右擊近Excel窗口
  2. 選擇查看代碼底部的標籤名稱 - 這帶來了一個VBE窗口
  3. 粘貼的東西並關閉VBE窗口

如果您有任何疑慮,首先在試用工作表上試用。

如果保存工作簿,宏將與其一起保存。 如果您正在使用一個版本的Excel更高然後2003,你必須保存 該文件作爲.XLSM而非的.xlsx

要刪除宏:

  1. 彈出窗口VBE如上
  2. 清晰的代碼進行
  3. 關閉VBE窗口

要了解更多關於一般的宏,請參閱:

http://www.mvps.org/dmcritchie/excel/getstarted.htm

http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx

要了解更多有關事件宏(工作表的代碼),請參閱:

http://www.mvps.org/dmcritchie/excel/event.htm

宏必須爲此工作啓用!