Note: The other languages of the website are Google-translated. Back to English

如何在Excel中基于日期保护单元格?

通常,我们可以保护工作表以防止其他人编辑或修改单元格值,但是有时您需要根据日期保护单元格。 例如,我要保护其他单元格,但只允许修改今天日期的单元格值,如下面的屏幕截图所示,本文将讨论如何基于日期保护单元格。

doc按日期保护1

使用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

doc按日期保护2

备注:在上面的代码中,字母 E 是日期所在的列标题,“111111”是保护此工作表的密码。 您可以根据需要更改它们。

2。 然后保存并关闭此代码窗口。

(1.)如果单击今天日期行以外的其他单元格,则会弹出提示框,提醒您无法编辑该单元格,请参见屏幕截图:

doc按日期保护3

(2.)如果单击并编辑等于今天的日期的行,它将被成功修改,请参见屏幕截图:

doc按日期保护4


箭头蓝色右气泡 使用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

doc按日期保护5

备注:在上面的代码中,数字 5 是日期所在的列号,“111111”是保护此工作表的密码。 您可以根据需要更改它们。

3。 然后保存并关闭此代码窗口。

(1.)如果单击单元格日期已过,则会弹出一个提示框,提醒您无法编辑该单元格,请参见屏幕截图:

doc按日期保护6

(2.)如果单击行的单元格尝试更改今天或将来日期中的值,则将成功修改它,请参见屏幕截图:

doc按日期保护7


最佳办公效率工具

Kutools for Excel解决了您的大多数问题,并使您的生产率提高了80%

  • 重用: 快速插入 复杂的公式,图表 以及您以前使用过的任何东西; 加密单元 带密码 创建邮件列表 并发送电子邮件...
  • 超级公式栏 (轻松编辑多行文本和公式); 阅读版式 (轻松读取和编辑大量单元格); 粘贴到过滤范围...
  • 合并单元格/行/列 不会丢失数据; 拆分单元格内容; 合并重复的行/列...防止细胞重复; 比较范围...
  • 选择重复或唯一 行; 选择空白行 (所有单元格都是空的); 超级查找和模糊查找 在许多工作簿中; 随机选择...
  • 确切的副本 多个单元格,无需更改公式参考; 自动创建参考 到多张纸; 插入项目符号,复选框等...
  • 提取文字,添加文本,按位置删除, 删除空间; 创建和打印分页小计; 在单元格内容和注释之间转换...
  • 超级滤镜 (将过滤方案保存并应用于其他工作表); 高级排序 按月/周/日,频率及更多; 特殊过滤器 用粗体,斜体...
  • 结合工作簿和工作表; 根据关键列合并表; 将数据分割成多个工作表; 批量转换xls,xlsx和PDF...
  • 超过300种强大功能. 支持 Office / Excel 2007-2021 和 365。支持所有语言。 在您的企业或组织中轻松部署。 完整功能 30 天免费试用。 60 天退款保证。
kte选项卡201905

Office选项卡为Office带来了选项卡式界面,使您的工作更加轻松

  • 在Word,Excel,PowerPoint中启用选项卡式编辑和阅读,发布者,Access,Visio和Project。
  • 在同一窗口的新选项卡中而不是在新窗口中打开并创建多个文档。
  • 每天将您的工作效率提高50%,并减少数百次鼠标单击!
officetab底部
按评论排序
注释 (30)
还没有评分。 成为第一位评论!
该评论由网站上的主持人最小化
漏洞:其他人可以通过使用“查看代码”选项看到密码。
该评论由网站上的主持人最小化
无法正常工作,因为所有单元格都显示消息但可编辑
该评论由网站上的主持人最小化
嗨,是否可以按列正上方的日期锁定列?
该评论由网站上的主持人最小化
私人子工作表_Change(ByVal Target As Range)

'订阅 http://youtube.com/excel10tutorial

'通过捐赠来支持频道 http://patreon.com/excel10tutorial

暗色作为范围

'在此处设置正确的工作表名称:

With ThisWorkbook.Sheets("AGOSTO-22")

.取消保护“ABCDE”

对于 .UsedRange.Columns 中的每个列

col.EntireColumn.Locked = col.Range("A1").Value <> 日期

下一栏

.保护“ABCDE”

.EnableSelection = xlNoRestrictions

结束

END SUB
该评论由网站上的主持人最小化
嗨,是否可以根据列中直接位于它们上方的日期锁定某些单元格?
该评论由网站上的主持人最小化
嗨,卢西斯,
你能更具体地给出你的问题吗? 或者您可以附上屏幕截图作为您的问题。
谢谢!
该评论由网站上的主持人最小化
嗨天阳

是的,这是一个屏幕截图。 希望这可以帮助。
该评论由网站上的主持人最小化
在这里。
查看附件 (1 / 5)
该评论由网站上的主持人最小化
你好,卢西斯,
您的意思是锁定过去日期的列,并且只能修改今天和未来几天的列吗?
查看附件 (1 / 5)
该评论由网站上的主持人最小化
正确的! 我该怎么做呢?
该评论由网站上的主持人最小化
嗨,路易斯,
A1中的日期单元格怎么样? 是手动输入还是用公式 =now() 输入的? 如果是公式单元格,则锁定的列将随着日期的变化而变化。
期待你的回复!
该评论由网站上的主持人最小化
嗨天阳

是的,单元格 A1 具有 =now() 公式。

谢谢!
该评论由网站上的主持人最小化
你好.....


我正在使用代码来保护除今天的日期行之外的所有行............



Private Sub Worksheet_SelectionChange(作为范围的ByVal目标)
'更新通过 Extendoffice 20161025
If Range("A" & Selection.Row).Value <> Date Then
ActiveSheet.Protect 密码:="111111"
MsgBox "只能编辑今天的日期行!", vbInformation, "Kutools for Excel"
ElseIf Range("E" & Selection.Row).Value = Date Then
ActiveSheet.Unprotect 密码:="111111"
ActiveSheet.EnableSelection = xlNoRestrictions
结束如果
END SUB


在我保存并单击单元格后,我会收到消息,只有今天的日期行可以编辑....但是如果我双击单元格,我可以编辑...请帮助
该评论由网站上的主持人最小化
这很好用。 但是如何切换它以根据第 3 行中的日期解锁列?
该评论由网站上的主持人最小化
作为一个对 VBA 比较陌生的人,您介意解释一下为什么第 2 行中的 xRow = 4 吗?



谢谢
该评论由网站上的主持人最小化
因为在第没有。 1 你有标题
该评论由网站上的主持人最小化
嗨,

运行此代码时出现错误,如图所示
我还附上了我想要更改的excel的快照..

你能在我的代码中指导我应该根据我的excel文件在哪里进行更改,以便可以编辑只包含今天和未来日期的单元格吗???
查看附件 (2 / 5)
该评论由网站上的主持人最小化
你好,卡兰,
因为您的表格中有合并单元格,所以上述代码无法在合并单元格表格中正确应用。
如果您还有其他好的想法,请在此处发表评论。 谢谢!
该评论由网站上的主持人最小化
您好,我尝试做同样的事情,但通过将“Selection.Row”替换为“Selection.Columns”和“E”替换为“5”(日期所在的行号),用 VBA 代码保护除今天的日期列之外的所有列,但是我不断收到错误 1004!

有什么帮助吗?

谢谢
该评论由网站上的主持人最小化
您好,我尝试做同样的事情,但通过将“Selection.Row”替换为“Selection.Columns”和“E”替换为“5”(日期所在的行号),用 VBA 代码保护除今天的日期列之外的所有列,但是我不断收到错误 1004!

有什么帮助吗?

谢谢
该评论由网站上的主持人最小化
你好,
将此代码应用于您需要的列,请使用以下 VBA 代码:(注意:在代码中,5 是包含日期的行号,请根据需要更改。)

Private Sub Worksheet_SelectionChange(作为范围的ByVal目标)
将 xRg 调暗为范围
设置 xRg = Target.Worksheet.Cells(5, Target.Column)
如果 xRg <> 日期 那么
ActiveSheet.Protect 密码:="111111"
MsgBox "只能编辑今天的日期行!", vbInformation, "Kutools for Excel"
ElseIf xRg.Value = 日期然后
ActiveSheet.Unprotect 密码:="111111"
ActiveSheet.EnableSelection = xlNoRestrictions
结束如果
END SUB

请尝试,希望对您有所帮助!
该评论由网站上的主持人最小化
谢谢! 抱歉,我直到现在才收到您的回复,可能是我的电子邮件有问题。

有效! 不能说谢谢! 我非常感谢!
该评论由网站上的主持人最小化
嗨,
很高兴它可以帮助你!
该评论由网站上的主持人最小化
嗨,

我正在尝试扩展它以保护不包括本月或/和本周的列。 我试图用“月”或“周”替换“日期”,但没有奏效。

我附上了一个周表样本,用户不能在本周以外的列中编辑或输入。

对此有何建议? 还是我应该使用实际日期来反映一个月中的一天?
该评论由网站上的主持人最小化
感谢您的帮助,非常感谢您的朋友,这是一个很大的帮助。 解决了我的紧张情绪。
是安全的
问候罗希特·卡纳
该评论由网站上的主持人最小化
嗨我面临一个问题,一旦我关闭文件并在同一日期再次打开它,代码就不起作用。 请帮助我卡住
该评论由网站上的主持人最小化
嗨,罗希特,
为了保留代码,您应该将您的工作簿保存为 Excel 启用宏的工作簿格式,请尝试,谢谢!
该评论由网站上的主持人最小化
你好,我做到了,但是当我按下单元格消息时显示它无法编辑,但是当我按下键盘时,我仍然可以在单元格中写入
该评论由网站上的主持人最小化
您好,我想保护未来的日子,并允许编辑当前和过去的日子。 我怎么做?
该评论由网站上的主持人最小化
你好,米格尔,为了保护未来的日子,请应用以下代码: Private Sub Worksheet_Change(ByVal Target As Excel.Range)
'更新通过 Extendoffice
将 xRow 变暗
x行 = 2
ThisWorkbook.ActiveSheet.Unprotect Password:="111111"
ThisWorkbook.ActiveSheet.Cells.Locked = False
做直到 IsEmpty(Cells(xRow, 5))
If Cells(xRow, 5) > Date Then
行(xRow).Locked = True
结束如果
x行 = x行 + 1
循环
ThisWorkbook.ActiveSheet.Protect 密码:="111111"
完子请试一试,希望能帮到你!
这里还没有评论
留下你的意见
以访客身份发帖
×
评价此帖子:
0   产品特性
建议地点

关注我们

版权所有 © 2009 - extendoffice.com。 | 版权所有。 供电 ExtendOffice。 | 网站地图
Microsoft和Office徽标是Microsoft Corporation在美国和/或其他国家的商标或注册商标。
受Sectigo SSL保护