วิธีป้องกันเซลล์ตามวันที่ใน Excel
โดยปกติเราสามารถป้องกันแผ่นงานเพื่อป้องกันไม่ให้ผู้อื่นแก้ไขหรือแก้ไขค่าของเซลล์ แต่บางครั้งคุณต้องป้องกันเซลล์ตามวันที่ ตัวอย่างเช่นฉันต้องการปกป้องเซลล์อื่น ๆ แต่อนุญาตให้แก้ไขเฉพาะค่าเซลล์ของวันที่ของวันนี้ตามภาพหน้าจอต่อไปนี้บทความนี้จะพูดถึงวิธีการป้องกันเซลล์ตามวันที่
ปกป้องแถวทั้งหมดยกเว้นแถววันที่ของวันนี้ด้วยรหัส VBA
ป้องกันแถวทั้งหมดที่วันที่ผ่านไปด้วยรหัส VBA
ปกป้องแถวทั้งหมดยกเว้นแถววันที่ของวันนี้ด้วยรหัส VBA
อนุญาตให้แก้ไขเฉพาะแถวที่เท่ากับวันที่ของวันนี้รหัสต่อไปนี้สามารถช่วยคุณได้โปรดดำเนินการดังนี้:
1. คลิกขวาที่แท็บแผ่นงานที่คุณต้องการป้องกันเซลล์ตามวันที่จากนั้นเลือก ดูรหัส จากเมนูบริบทในป๊อปอัป Microsoft Visual Basic สำหรับแอปพลิเคชัน โปรดคัดลอกและวางรหัสต่อไปนี้ลงในโมดูลว่าง:
รหัส VBA: ปกป้องแถวทั้งหมดยกเว้นแถววันที่ของวันนี้:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'Updateby Extendoffice 20161025
If Range("E" & Selection.Row).Value <> Date Then
ActiveSheet.Protect Password:="111111"
MsgBox "Only today's date row can be edited!", vbInformation, "Kutools for Excel"
ElseIf Range("E" & Selection.Row).Value = Date Then
ActiveSheet.Unprotect Password:="111111"
ActiveSheet.EnableSelection = xlNoRestrictions
End If
End Sub
หมายเหตุ: ในรหัสด้านบนตัวอักษร E คือส่วนหัวของคอลัมน์ที่มีวันที่ "111111” คือรหัสผ่านเพื่อป้องกันแผ่นงานนี้ คุณสามารถเปลี่ยนได้ตามความต้องการของคุณ
2. จากนั้นบันทึกและปิดหน้าต่างรหัสนี้
(1. ) หากคุณคลิกเซลล์อื่นนอกเหนือจากแถววันที่ของวันนี้กล่องพร้อมต์จะปรากฏขึ้นเพื่อเตือนคุณว่าไม่สามารถแก้ไขเซลล์ได้โปรดดูภาพหน้าจอ:
(2. ) หากคุณคลิกและแก้ไขแถวที่เท่ากับวันที่ของวันนี้จะได้รับการแก้ไขสำเร็จดูภาพหน้าจอ:
ป้องกันแถวทั้งหมดที่วันที่ผ่านไปด้วยรหัส VBA
หากคุณต้องการป้องกันแถวทั้งหมดที่วันที่ผ่านไปอนุญาตให้แก้ไขเฉพาะแถววันที่วันนี้และในอนาคตเท่านั้นโปรดใช้รหัส VBA ต่อไปนี้:
1. คลิกขวาที่แท็บแผ่นงานที่คุณต้องการป้องกันเซลล์ตามวันที่จากนั้นเลือก ดูรหัส จากเมนูบริบทในป๊อปอัป Microsoft Visual Basic สำหรับแอปพลิเคชัน โปรดคัดลอกและวางรหัสต่อไปนี้ลงในโมดูลว่าง:
รหัส VBA: ป้องกันวันที่แถวทั้งหมดผ่านไป:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
'Updateby Extendoffice 20161025
Dim xRow As Long
xRow = 2
ThisWorkbook.ActiveSheet.Unprotect Password:="111111"
ThisWorkbook.ActiveSheet.Cells.Locked = False
Do Until IsEmpty(Cells(xRow, 5))
If Cells(xRow, 5) < Date Then
Rows(xRow).Locked = True
End If
xRow = xRow + 1
Loop
ThisWorkbook.ActiveSheet.Protect Password:="111111"
End Sub
หมายเหตุ: ในรหัสด้านบนหมายเลข 5 คือหมายเลขคอลัมน์ที่มีวันที่ "111111” คือรหัสผ่านเพื่อป้องกันแผ่นงานนี้ คุณสามารถเปลี่ยนได้ตามความต้องการของคุณ
3. จากนั้นบันทึกและปิดหน้าต่างรหัสนี้
(1. ) หากคุณคลิกวันที่ของเซลล์ได้ผ่านไปแล้วกล่องพร้อมต์จะปรากฏขึ้นเพื่อเตือนว่าคุณไม่สามารถแก้ไขเซลล์ได้โปรดดูภาพหน้าจอ:
(2. ) หากคุณคลิกเซลล์ของแถวเพื่อพยายามเปลี่ยนค่าในวันที่ของวันนี้หรือวันที่ในอนาคตจะมีการแก้ไขสำเร็จดูภาพหน้าจอ:
สุดยอดเครื่องมือเพิ่มผลผลิตในสำนักงาน
เพิ่มพูนทักษะ Excel ของคุณด้วย Kutools สำหรับ Excel และสัมผัสประสิทธิภาพอย่างที่ไม่เคยมีมาก่อน Kutools สำหรับ Excel เสนอคุณสมบัติขั้นสูงมากกว่า 300 รายการเพื่อเพิ่มประสิทธิภาพและประหยัดเวลา คลิกที่นี่เพื่อรับคุณสมบัติที่คุณต้องการมากที่สุด...
แท็บ Office นำอินเทอร์เฟซแบบแท็บมาที่ Office และทำให้งานของคุณง่ายขึ้นมาก
- เปิดใช้งานการแก้ไขและอ่านแบบแท็บใน Word, Excel, PowerPoint, ผู้จัดพิมพ์, Access, Visio และโครงการ
- เปิดและสร้างเอกสารหลายรายการในแท็บใหม่ของหน้าต่างเดียวกันแทนที่จะเป็นในหน้าต่างใหม่
- เพิ่มประสิทธิภาพการทำงานของคุณ 50% และลดการคลิกเมาส์หลายร้อยครั้งให้คุณทุกวัน!