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的内容以删除时间戳并解锁行进行编辑,则还原代码中的两个重新出现的行。
希望这可以帮助。