2张macros指向同一个单元格

这可能是一个真正的“新手”问题,但是诚实地说,我对macros很陌生,需要一些帮助。

如果单元格AA10显示“ 已批准 ”,我写了一个macros,用于自动向单元格AB10添加date/时间戳记。 如果AA10空,该macros也会自动删除AB10 & AC10的内容。

现在,我需要在单元格AA10显示为“已批准”且在AB10自动填充date/时间并且在单元格AC10有一个值(来自预定的下拉列表)之后,再locking整行。

这是我现有的macros:

 Private Sub Worksheet_Change(ByVal Target As Excel.Range) With Target If .Count > 1 Then Exit Sub If Not Intersect(Range("AA10:AA10000"), .Cells) Is Nothing Then Application.EnableEvents = False If IsEmpty(.Value) Then .Offset(0, 1).ClearContents .Offset(0, 2).ClearContents Else With .Offset(0, 1) .NumberFormat = "dd mmm yyyy hh:mm" .Value = Now End With End If Application.EnableEvents = True End If End With End Sub 

有人可以告诉我如何添加必要的代码来locking上面的行吗? 我试图添加的所有东西只是禁用了上面的macros。

真诚感谢您提供的任何帮助!

只需要对您的代码进行微小的修改。 将以下内容粘贴到工作表的代码模块中:

 Option Explicit Private Const strPassword As String = "password" Private Sub Worksheet_Activate() Me.Protect Password:=strPassword, userinterfaceonly:=True End Sub Private Sub Worksheet_Change(ByVal Target As Excel.Range) With Target If .Count > 1 Then Exit Sub If Not Intersect(Range("AA10:AA10000"), .Cells) Is Nothing Then Application.EnableEvents = False If IsEmpty(.Value) Then .Offset(0, 1).ClearContents .Offset(0, 2).ClearContents '.EntireRow.Locked = False Else With .Offset(0, 1) .NumberFormat = "dd mmm yyyy hh:mm" .Value = Now End With .EntireRow.Locked = True '.Locked = False End If Application.EnableEvents = True End If End With End Sub 

以上假设所有需要可编辑的单元格都处于未locking状态(注意:Excel的默认值已被locking)。 根据您的初始代码,将input时间戳,并且无论列AA中键入的内容哪行都将被locking。 如果您希望用户能够随后清除列AA的内容以删除时间戳并解锁行进行编辑,则还原代码中的两个重新出现的行。

希望这可以帮助。