返回列表 上一主題 發帖

工作表保護(在以保護下,當某個區塊填寫資料後,整個工作表都是保護不能填寫資料)

工作表保護(在以保護下,當某個區塊填寫資料後,整個工作表都是保護不能填寫資料)

Dear 大大

         詢問一下保護工作表的功能,如下圖及附件所示,
         一般保護工作表,都是為了不讓整個資料結構被修改或移動,避免導致資料在撈取時,所產生的錯誤,
         所以,都會設定某些欄位是開放給填寫者填寫,
         但現在的需求是:當填寫者填寫完後,該資料是要被上鎖,避免下個審核者去修改到填寫者的資料,
         想請教大大們,對於這一個問題,可以賜教、解惑。
      
      
       表護工作表練習.rar (13.26 KB)
學習才能提升自己

回復 1# hugh0620
要的是這樣嗎? 按按鈕後 刪除"允許使用者編輯範圍"內的設定
  1. Private Sub CommandButton1_Click()
  2.   Unprotect Password:="1234"
  3.   ActiveSheet.Protection.AllowEditRanges(1).Delete
  4.   Protect Password:="1234"
  5. End Sub
複製代碼
表達不清、題意不明確、沒附檔案格式、沒有討論問題的態度~~~~~~以上愛莫能助。

TOP

本帖最後由 hugh0620 於 2014-12-15 18:30 編輯

回復 2# stillfish00


    Dear  stillfish00

                謝謝你提供的方式,可以達到需求功能,
                但是否有其他種方式,既可以保留用本允許使用者的範圍,又可以將其保護起來。
                delete 的方式,希望是最後一種考慮的方式。
學習才能提升自己

TOP

回復 3# hugh0620
不知道,大概不能

我自己一般是將可輸入的儲存格用名稱管理員先定義
然後控制各名稱範圍內的儲存格"鎖定"或"不鎖定"
然後再保護工作表

允許使用者編輯感覺是無視有沒有鎖定都可編輯,我是比較少用的。
表達不清、題意不明確、沒附檔案格式、沒有討論問題的態度~~~~~~以上愛莫能助。

TOP

本帖最後由 hugh0620 於 2014-12-16 00:23 編輯

回復 4# stillfish00


    Dear stillfish00

               用名稱管理員來定義,聽起來也許是另一條適合達到我需求的方式
               能否請您做一個簡單的範本,提供給我參考看看,感恩。

               (個人比較少對保護有所使用或研究,不是很熟悉更深入的方式,請使用最簡單的保護操作)
學習才能提升自己

TOP

回復 5# hugh0620
先定好名稱 IN_DATA1 的範圍
  1. Private Sub CommandButton1_Click()
  2.   LockInput
  3. End Sub

  4. Private Sub UnlockInput()
  5.   Unprotect Password:="1234"
  6.   Range("IN_DATA1").Locked = False
  7.   Protect Password:="1234"
  8. End Sub

  9. Private Sub LockInput()
  10.   Unprotect Password:="1234"
  11.   Range("IN_DATA1").Locked = True
  12.   Protect Password:="1234"
  13. End Sub
複製代碼
保護工作表練習2.zip (14.18 KB)
表達不清、題意不明確、沒附檔案格式、沒有討論問題的態度~~~~~~以上愛莫能助。

TOP

本帖最後由 hugh0620 於 2014-12-17 09:04 編輯

回復 6# stillfish00


  Dear  stillfish00
             您提供的方式,可以解決我遇到的問題,在空白頁上,執行是ok的
             但我已經把我需要寫的部分,寫了蠻多的了,
             結果,運用您提供的方式, 產生如下的錯誤產生,
             也把相關該設定的地方,改成跟空白頁執行十一樣。
             ex. 在名稱定義上已經設定好了
                   允許使用者編輯範圍清空,改用您提供的方式
             就是在執行  Range("AAA").Locked = False (or True) 時,產生錯誤
            
            
            
學習才能提升自己

TOP

本帖最後由 stillfish00 於 2014-12-17 09:38 編輯

回復 7# hugh0620
光是這樣看不出問題,debug不是只有錯誤代碼就能debug............最好是附檔啦
1. 按偵錯
2. 在即時運算視窗輸入 ?Range("AAA").address , 看是否會出錯
3. 檢查此時是否能手動對輸入範圍的儲存格做鎖定: 右鍵>儲存格格式>保護>鎖定
表達不清、題意不明確、沒附檔案格式、沒有討論問題的態度~~~~~~以上愛莫能助。

TOP

本帖最後由 hugh0620 於 2014-12-17 11:50 編輯

回復 8# stillfish00

Dear stillfish00
         提共一個類似情境的範本
         範本.rar (17.4 KB)
         如您所說的方式執行如下:
1. 按偵錯 (不解)

2. 在即時運算視窗輸入 ?Range("AAA").address , 看是否會出錯

3. 檢查此時是否能手動對輸入範圍的儲存格做鎖定: 右鍵>儲存格格式>保護>鎖定
學習才能提升自己

TOP

回復 9# hugh0620
含合併儲存格,改這樣:
  For Each x In Range("AAA")
    x.MergeArea.Locked = False
  Next
表達不清、題意不明確、沒附檔案格式、沒有討論問題的態度~~~~~~以上愛莫能助。

TOP

        靜思自在 : 【時間如鑽石】時間對一個有智慧的人而言,就如鑽石般珍貴;但對愚人來說,卻像是一把泥土,一點價值也沒有。
返回列表 上一主題