【问题标题】:How to lock a cell value after taking 1st instance value from different cell in excel从excel中的不同单元格获取第一个实例值后如何锁定单元格值
【发布时间】:2017-04-13 11:42:42
【问题描述】:
End Date       Original End Date                
4/13/2017      4/13/2017------------>  1st instance value

如果用户更改End Date 列中的日期,则Original End Date 列中的日期不应更改(它应该从结束日期开始输入第一个值)。 Original End Date 列应冻结到End Date 列中的第一个条目日期。

如果用户更改结束日期,应该是这样的:

End Date    Original End Date               
4/20/2017   4/13/2017------------> End Date is changed. 

但原始结束日期与第一个结束日期相同。

是否有任何 Excel 公式或 VBA 代码用于此?

此外,不应保护工作表以满足此要求。

【问题讨论】:

  • End Date 是哪一栏? Original End Date 是哪一列?
  • 结束日期在P列,原始结束日期在Q列
  • 试试下面的答案和代码
  • 请更清楚地描述情况。结束日期和原始结束数据列从哪里获取值(用户输入、Excel 公式、VBA 代码、链接到和外部数据源等)?发布您的代码(如果有的话)并附上屏幕截图。

标签: excel vba date


【解决方案1】:

因为End Date 在“P”列中,而Original End Date 在“Q”列中。

所以将代码放在下面,在您相关工作表的代码中,该代码只有在“P”列中的值被修改时才会起作用。

代码

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Column = 16 Then ' check if the value modified is in Column "P"
    If Target.Offset(, 1).Value = "" Then '<-- check if the value in Column "Q" is empty
        Target.Offset(, 1).Value = Target.Value ' modify value of Column "Q" to value of Column "P"
    End If
End If

End Sub

【讨论】:

  • 原始日期是可编辑的。它应该是不可编辑的。
  • @SunnyJayadev 这不是你在帖子中要求的
  • @SunnyJayadev 没关系,只要你得到你想要的答案
【解决方案2】:

假设 A 列是结束日期,B 列是原始结束日期,请将以下代码放在工作表模块上。为此,请右键单击工作表选项卡 --> 查看代码并将下面给出的代码粘贴到打开的代码窗口中 --> 将您的工作簿另存为启用宏的工作簿。

Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Target.Column = 1 And Target.Row > 1 Then
    If Target.Offset(0, 1) = "" Then Target.Offset(0, 1) = CDate(Target)
ElseIf Target.Column = 2 And Target.Row > 1 Then
    If Target <> "" Then Application.Undo
End If
Application.EnableEvents = True
End Sub

此代码仅允许用户在 A 列中输入结束日期。并且第一个实例将记录在 B 列的相应单元格中。以后用户既不能更改 B 列中的日期,也不能在 B 列中输入任何日期或内容。即 B 列将被锁定以供任何用户输入,它只会接受在 A 列中首次输入的日期。

【讨论】:

  • 是的,这就是我要找的那个。原始日期应该是不可编辑的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多