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

标签 excel vba

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

我编写了一个宏,如果单元格 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/

相关文章:

c# - 将 Excel 数据导入数据库

excel - 转置虚拟变量

excel - 我需要在 vba 中解释 activecell.offset

php - 将数据库导出到php中excel文件中的不同工作表

excel - VBA,查找MIN值,根据该值突出显示行

excel - 将矩阵导出到 Excel

excel - 使用不同行上的 VBA、数据和变量从 .txt 文件中解析数据

asp.net - 带有 EPPlus 2.9 的 Chrome 16 中出现“从服务器收到重复 header ”错误

vba - Excel VBA 语言翻译代码损坏?

vba - Excel VBA 宏 - 在选定的单元格上运行