Board logo

標題: 儲存格保護 [打印本頁]

作者: 317    時間: 2013-6-1 16:29     標題: 儲存格保護

各大大, 好
小妹有一問題請教, 在工作表中,假設 a1:a100用家想用一按鈕, 在該範圍內當用家於輸入資料後於其中任何儲存格中, 然後用家按一下按鈕, 該儲存格便被保護, 如小妹想取消該儲存格保護同樣地按一下按鈕, 儲存存格即可編輯使用,
小妹曾使用儲存格保護, 但出來的效果並不完美, 故請各大大幫忙, 謝!
作者: 317    時間: 2013-6-1 22:29

各大大, 好
小妹有一問題請教, 在工作表中,假設 a1:a100用家想用一按鈕, 在該範圍內當用家於輸入資料後於其 ...
317 發表於 2013-6-1 16:29 [/quote]

小妹現把檔案上傳, 希望能得到回應,
[attach]15131[/attach][quote]
作者: kimbal    時間: 2013-6-1 23:29

回復 2# 317

這段代碼放在工作表1的代碼內
  1. Private Sub CommandButton1_Click()
  2.         ActiveSheet.Unprotect
  3.         Selection.Locked = True
  4.         ActiveSheet.Protect
  5. End Sub

  6. Private Sub CommandButton2_Click()
  7.         ActiveSheet.Unprotect
  8.         Selection.Locked = False
  9.         ActiveSheet.Protect
  10. End Sub
複製代碼
用法:    先把工作頁保護,或按一下 1
所有格子預設是鎖死的, 按下2可以解鎖
作者: Hsieh    時間: 2013-6-1 23:35

回復 2# 317

試試
  1. Private Sub CommandButton1_Click()
  2. Me.Unprotect '取消保護
  3. Me.Cells.Locked = False '儲存格取消鎖定
  4. Me.Cells.SpecialCells(xlCellTypeConstants).Locked = True '非空格鎖定
  5. Me.Protect '保護工作表
  6. End Sub

  7. Private Sub CommandButton2_Click()
  8. Me.Unprotect '取消保護
  9. End Sub
複製代碼

作者: 317    時間: 2013-6-1 23:56

回復 3# kimbal
感謝大大回應,
小妹受教了, 但有一點小問題想加入, 可否在程式中加入一行清空儲存格資料, 當小妹進行編輯時按按鈕2, 儲存格資料同時清空, 因小妹於儲存格中設定了條件格式化, 故希望能加入此程式, 謝謝!!
作者: 317    時間: 2013-6-2 09:15

回復 4# Hsieh
hsieh版大, 謝謝回應,
小妹感謝, 小妹想作小許修改, 不知大大們能協助, 謝

修改1,      受保護範圍從G3:AK100, 此範圍外用家可隨意編輯,

修改2,      基於小妹在該範圍內用了條件格式化, 當有值時, 儲存格變換顏色, 在用家按下按鈕2時是否同時可以清空該儲存資料, 因有時用家想取消已輸入的值, 儲存格還是變了色, 用家必須按其右健按下清空資料, 儲存格才能回復原來未輸入值狀態.無色.

                 故希望於該範圍內選擇了儲存格, 按按鈕2, 該儲存同時被清空,

先行謝謝版大
作者: Hsieh    時間: 2013-6-2 17:12

回復 6# 317
  1. Private Sub CommandButton1_Click()
  2. Me.Unprotect 12345 '取消保護
  3. Cells.Locked = False '儲存格取消鎖定
  4. If Application.CountA(Range("G3:AK100")) > 0 Then Range("G3:AK100").SpecialCells(xlCellTypeConstants).Locked = True '非空格鎖定
  5. Me.Protect 12345 '保護工作表
  6. End Sub

  7. Private Sub CommandButton2_Click()
  8. Me.Unprotect 12345 '取消保護
  9. If Not Intersect(Range("G3:AK100"), Selection) Is Nothing Then Selection.ClearContents
  10. Cells.Locked = False '儲存格取消鎖定
  11. If Application.CountA(Range("G3:AK100")) > 0 Then Range("G3:AK100").SpecialCells(xlCellTypeConstants).Locked = True '非空格鎖定
  12. Me.Protect 12345 '保護工作表
  13. End Sub
複製代碼

作者: 317    時間: 2013-6-2 20:03

回復 7# Hsieh
謝謝hsieh版大, 小妹衷心感謝, 祝快樂,
作者: hong912    時間: 2013-6-2 20:18

回復 7# Hsieh
今天到這論壇, 看到這篇文章, 的確亦小弟獲益良多, 有個問題請教版主, 程式中12345應是密碼, 小弟試用, 則無須輸入密碼, 請教大大這密碼於程式中的作用是,
另假若當使用者沒有使用條件格式化, 當完成資料輸入後, 使用者按下按鈕1, 這時儲存格才變色及保護, 就是否可以,  還望版大教導, 謝謝!!
作者: Hsieh    時間: 2013-6-2 22:55

回復 9# hong912
這問題指示操作程序上的認知
樓主的需求是在範圍內原本都無保護狀態供使用者輸入資料
當使用者輸入完資料後,必須按下按鈕1,才會對已有的資料作保護
空格仍然可以自由輸入,若輸入完成沒有按下按鈕1那麼該儲存格仍然能夠修改
所以,你測試時是否有照此程序邏輯使用?如果有按下按鈕1以後就應該會對有資料的儲存格保護
你的需求只是多了對儲存格顏色做設定
試試
  1. Private Sub CommandButton1_Click()
  2. Dim Rng As Range
  3. Set Rng = Cells '指定作用範圍
  4. Me.Unprotect 12345 '取消工作表保護
  5. Cells.Locked = False '所有儲存格取消鎖定
  6. If Application.CountA(Rng) > 0 Then '範圍內有資料
  7. Rng.Interior.ColorIndex = xlNone '去除底色
  8. With Rng.SpecialCells(xlCellTypeConstants) '有資料的儲存格設定
  9.   .Interior.ColorIndex = 6 '底色為黃色
  10.   .Locked = True '鎖定儲存格
  11. End With
  12. End If
  13. Me.Protect 12345 '工作表保護
  14. End Sub
複製代碼

作者: hong912    時間: 2013-6-2 23:30

回復 10# Hsieh
版大明白了, 小弟謝謝,
如果按下按鈕1, 有值的儲存格變為黃色, 儲存格同時受到保護, 我想把這範圍改為e4:aa100, 這就是否可以,
最後, 祝願版大快樂..
作者: 317    時間: 2013-6-6 07:35

回復 7# Hsieh
hsieh版大, 早晨
小妹先行感謝大大協助上述程式,  同時亦把程式加入工作中使用, 真的很受用, 但當中遇上一個小問題, 是否可以做到當任何用家修改資料, 都可以追蹤其更改處, 小妹曾試用excel追蹤修訂, 但原在有程式的檔案是用不到這功能,
故大著胆子, 再把問題提出, 希望大大能協助, 現把問題清色簡報一下.
當有用家要修改輸入資料時, 選擇有值的儲存格, 按按鈕1, 儲存格解去保護, 可以編輯, 現時問題在於此, 當用家完成修改後, 按下按紐2, 用家離開檔案, 這些用作可能只有用家知道, 當其他同事發覺到檔案有修改, 同事們是不知誰人修改,
可有方辦記錄該資料已作變更, 及變更時間, 或有更好方式.
最後請hsieh版大勿怪小妹痳煩, 謝謝, 祝健康, 感恩.




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