Board logo

標題: [發問] VBA設定工作表保護與解除 [打印本頁]

作者: taiwan    時間: 2014-11-10 13:26     標題: VBA設定工作表保護與解除

本帖最後由 taiwan 於 2014-11-10 13:27 編輯

我有一個資料Sheet 稱為sample

我在此資料表內設一個按鈕,這按扭功能會對 sample資料內容進行更新
為了避免使用者把資料按到空白鍵之類,或誤觸


所以要設置密碼

那在功能邏輯上要先設解除工作表密碼在設保護工作表密碼

那這樣子在更新資料內容時比較不會有誤

在執行程式後發現有一個問題是 先解除密碼的sub功能失效

導致資料無法寫入更新  會出現1004錯誤代碼


程式碼如下:

'保護工作列表
  1. Sub LockLong()
  2.     On Error Resume Next
  3.    
  4.     ActiveSheet("sample").Unprotect "1234"

  5.    ActiveSheet("sample").Protect Password:="1234", DrawingObjects:=True, Contents:=True, Scenarios:=True
  6.    ActiveSheet("sample").EnableSelection = xlNoRestrictions


  7. End Sub
複製代碼

作者: taiwan    時間: 2014-11-10 13:33

自己來回答也分享各位

1.不要設保護及解除保護各一個sub
2.密碼為大小寫請都改為小寫
3.Unprotect 及Protect都要在後面多寫一段  Password:=確保執行上可行
  1.     Sub LockLong()
  2.         On Error Resume Next
  3.       
  4.         ActiveSheet("sample").Unprotect  [color=Red]Password:[/color]="1234"

  5.        ActiveSheet("sample").Protect Password:="1234", DrawingObjects:=True, Contents:=True, Scenarios:=True
  6.        ActiveSheet("sample").EnableSelection = xlNoRestrictions


  7.     End Sub
複製代碼

作者: taiwan    時間: 2014-11-11 09:04

還有一個問題

語法中以下此語法在我excel無法使用
  1. ActiveSheet("xxx").Protect Password:="1234"
複製代碼
我得用以下這斷才能執行 很納悶
  1. Workbooks("xxx").Worksheets("xx").Protect Password:="1234"
複製代碼

作者: GBKEE    時間: 2014-11-11 15:59

回復 3# taiwan
  1. Sub Ex()
  2. Sheets("xxx").Protect "1234"
  3. '或是
  4. ActiveSheet.Protect "1234"
  5. End Sub
複製代碼

作者: taiwan    時間: 2014-11-12 08:47

回復  taiwan
GBKEE 發表於 2014-11-11 15:59



  我會在試試看




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)