返回列表 上一主題 發帖

[發問] 今日 日期 可以修改 可以輸入 今日之前 鎖定 無法修改後

回復 1# mycmyc
有問題附檔上來會清楚些!

Module1 的程式碼
  1. Public 密碼, Rng As Range
  2. 'Public ->變數公用於此專案
  3. Private Sub Auto_Open()       '一般 Module中 開啟檔案時會自動執行的程序
  4.     密碼 = "1234"
  5.     With Sheet(1)                                   '指定的工作表
  6.         .Activate
  7.         .Unprotect 密碼                             '取消工作表保
  8.         .Cells.Locked = True                        '儲存格鎖定
  9.         .Cells.FormulaHidden = True                 '儲存格隱藏
  10.         Set Rng = .Cells(.UsedRange.Rows.Count + 1, 1)
  11.         'Rng  設定已使用範圍第1欄最後的下一個空白儲存格
  12.         Rng.Locked = False
  13.         Rng.FormulaHidden = False
  14.         .Protect 密碼                               '工作表設定保護
  15.     End With
  16.     Rng.Select
  17. End Sub
複製代碼
Sheet(1)的程式碼
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2.     If Rng.Value <> Date Then
  3.         Unprotect 密碼                             '取消工作表保
  4.         Cells.Locked = True                        '儲存格鎖定
  5.         Cells.FormulaHidden = True                 '儲存格隱藏
  6.         Rng.Locked = False
  7.         Rng.FormulaHidden = False
  8.         Protect 密碼                               '工作表設定保護
  9.     ElseIf Rng.Value = Date Then
  10.         Unprotect 密碼                             '取消工作表保
  11.     End If
  12. End Sub
複製代碼

TOP

回復 4# mycmyc
  1. Private Sub Auto_Open()       '一般 Module中 開啟檔案時會自動執行的程序
  2.     Dim E As Range, 密碼 As String
  3.     密碼 = "1234"
  4.     With Sheet1                                 '指定的工作表
  5.         .Unprotect 密碼                             '取消工作表保
  6.         .Cells.Locked = False                        '取消儲存格鎖定
  7.         .Cells.FormulaHidden = False                 '取消儲存格隱藏
  8.         For Each E In .UsedRange.Columns(1).Cells
  9.             If IsDate(E) And E < Date Then E.EntireRow.Locked = True
  10.         Next
  11.         .Protect 密碼                               '工作表設定保護
  12.     End With
  13. End Sub
複製代碼
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2.     If Not Application.Intersect(Target, UsedRange.Columns(1)) Is Nothing Then Run "Module1.Auto_Open"
  3. End Sub
複製代碼

TOP

        靜思自在 : 有多少力量就做多少事,不要心存等待,等待才會落空。
返回列表 上一主題