返回列表 上一主題 發帖

儲存格保護

儲存格保護

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

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

小妹現把檔案上傳, 希望能得到回應,
aa.rar (11.15 KB) [quote]

TOP

回復 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可以解鎖
懂得發問,答案就會在其中

今日の一秒は  明日にない
http://kimbalko-chi.blogspot.com
http://kimbalko.blogspot.com

TOP

回復 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
複製代碼
學海無涯_不恥下問

TOP

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

TOP

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

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

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

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

先行謝謝版大

TOP

回復 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
複製代碼
學海無涯_不恥下問

TOP

回復 7# Hsieh
謝謝hsieh版大, 小妹衷心感謝, 祝快樂,

TOP

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

TOP

回復 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
複製代碼
學海無涯_不恥下問

TOP

        靜思自在 : 有心就有福,有願就有力,自造福田,自得福緣。
返回列表 上一主題