返回列表 上一主題 發帖

儲存格保護

回復 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

回復 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

回復 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

        靜思自在 : 有願放在心裡,沒有身體力行,正如耕田不播種,皆是空過因緣。
返回列表 上一主題