gpt4 book ai didi

excel - 一张纸中的 2 个宏针对相同的单元格

转载 作者:行者123 更新时间:2023-12-02 02:26:40 25 4
gpt4 key购买 nike

这可能是一个真正的“新手”问题,但老实说,我是宏新手,需要一些帮助。

我编写了一个宏,如果单元格 AA10 显示“已批准”,则自动向单元格 AB10 添加日期/时间戳。如果 AA10空白,此宏还会自动删除 AB10 和 AC10 的内容。

一旦单元格 AA10 显示已批准并在 AB10 中自动填充日期/时间,并且一旦有一个值(来自单元格 AC10 中的预定下拉列表)。

这是我现有的宏:

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

有人可以告诉我如何添加必要的代码来按上述要求锁定行吗?我尝试添加的所有内容都会禁用上面的宏。

衷心感谢您提供的任何帮助!

最佳答案

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

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

上面假设所有需要可编辑的单元格都以解锁状态开始(注意:Excel 的默认状态是锁定的)。根据您的初始代码,无论在 AA 列中输入什么内容,都将输入时间戳并且该行将被锁定。如果您希望用户随后能够清除 AA 列的内容,以删除时间戳并解锁该行以进行编辑,请恢复代码中重新删除的两行。

希望这有帮助。

关于excel - 一张纸中的 2 个宏针对相同的单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27172940/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com