如何在Excel中基于日期保護單元格?
通常,我們可以保護工作表以防止其他人或修改單元格值,但是有時您需要根據日期保護單元格。 例如,我要保護其他單元格,但只允許修改今天日期的單元格值,如下面的屏幕截圖所示,本文將討論如何基于日期保護單元格。
使用VBA代碼保護除今天日期行以外的所有行
使用VBA代碼保護日期過去的所有行
使用VBA代碼保護除今天日期行以外的所有行僅允許修改等于今天的日期的行,以下代碼可以為您提供幫助,請按以下步驟操作:
1。 右鍵單擊要基于日期保護單元格的工作表選項卡,然后選擇 查看代碼 從上下文菜單中,彈出 Microsoft Visual Basic應用程序 窗口,請將以下代碼復制并粘貼到空白模塊中:
VBA代碼:保護除今天的日期行以外的所有行:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)Updateby Extendoffice 20161025If Range("E" & Selection.Row).Value <> Date ThenActiveSheet.Protect PassWord:="111111"MsgBox "only todays date row can be edited!", vbInformation, "Kutools for Excel"ElseIf Range("E" & Selection.Row).Value = Date ThenActiveSheet.Unprotect PassWord:="111111"ActiveSheet.EnableSelection = xlNoRestrictionsEnd IfEnd SubCopy備注:在上面的代碼中,字母 E 是日期所在的列標題,“111111”是保護此工作表的密碼。 您可以根據需要更改它們。
2。 然后保存并關閉此代碼窗口。
(1.)如果單擊今天日期行以外的其他單元格,則會彈出提示框,提醒您無法該單元格,請參見屏幕截圖:
(2.)如果單擊并等于今天的日期的行,它將被成功修改,請參見屏幕截圖:
使用VBA代碼保護日期過去的所有行如果您需要保護日期已過的所有行,僅允許修改今天和將來的日期行,請應用以下VBA代碼:
1。 右鍵單擊要基于日期保護單元格的工作表選項卡,然后選擇 查看代碼 從上下文菜單中,彈出 Microsoft Visual Basic應用程序 窗口,請將以下代碼復制并粘貼到空白模塊中:
VBA代碼:保護所有行的日期已過:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)Updateby Extendoffice 20161025Dim xRow As LongxRow = 2ThisWorkbook.ActiveSheet.Unprotect Password:="111111"ThisWorkbook.ActiveSheet.Cells.Locked = FalseDo Until IsEmpty(Cells(xRow, 5))If Cells(xRow, 5) < Date ThenRows(xRow).Locked = TrueEnd IfxRow = xRow + 1LoopThisWorkbook.ActiveSheet.Protect Password:="111111"End SubCopy備注:在上面的代碼中,數字 5 是日期所在的列號,“111111”是保護此工作表的密碼。 您可以根據需要更改它們。
3。 然后保存并關閉此代碼窗口。
(1.)如果單擊單元格日期已過,則會彈出一個提示框,提醒您無法該單元格,請參見屏幕截圖:
(2.)如果單擊行的單元格嘗試更改今天或將來日期中的值,則將成功修改它,請參見屏幕截圖:
最佳辦公生產力工具
將小時轉化為分鐘 Kutools for Excel!準備好增強您的 Excel 任務了嗎? 利用的力量 Kutools for Excel - 您終極的節省時間的工具。 簡化復雜的任務并像專業人士一樣瀏覽數據。 以閃電般的速度體驗 Excel!
為什么需要 Kutools for Excel