gpt4 book ai didi

vba - 安全时间戳 - VBA

转载 作者:行者123 更新时间:2023-12-04 20:43:02 28 4
gpt4 key购买 nike

我想在我的 Excel 工作表上创建一个安全的时间戳。我正在使用的 VBA 将自动添加当前用户的用户名、时间和用户将信息放入 A 列的日期。因此,如果用户将某些内容放入单元格 A1,则 B1 会自动填充他们的用户名,而 C1 会被填充与时间和日期。唯一的问题是这种方法不安全,因为用户可以在自动填充信息后更改信息。我想向此 VBA 添加代码,以便在填充信息后锁定所有三个单元格。

我计划使用保护表功能,只允许用户“选择未锁定的单元格”所以如果 VBA 可以自动锁定单元格,那么用户将无法更改信息。

此外,我在更改单元格之前使用了 Me.Unprotect ,之后使用了 Me.Protect 仍然无法正常工作

任何帮助将非常感激!

最佳答案

假设我们从工作表 上的所有单元格开始解锁和受密码保护的工作表:

6LgSdHjc2uOssv0e1LDI

以下事件宏将:

  • 取消保护工作簿
  • 检测列 中的条目一个
  • 将用户名放在 列中乙以及 列中的日期/时间戳中号
  • 锁定列中的条目 A,B,C
  • 重新保护工作表。

  • 这进入工作表代码区域:
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim A As Range, MyPass As String, sh As Worksheet
    Dim unit As Range
    Set A = Range("A:A")
    MyPass = "6LgSdHjc2uOssv0e1LDI"
    Set sh = ActiveSheet
    If Intersect(Target, A) Is Nothing Then Exit Sub

    Set unit = Union(Target, Target.Offset(0, 1), Target.Offset(0, 2))

    Application.EnableEvents = False
    sh.Unprotect (MyPass)
    unit.Locked = False
    Target.Offset(0, 1) = Environ("Username")
    Target.Offset(0, 2) = Now()
    unit.Locked = True
    sh.Protect (MyPass)
    Application.EnableEvents = True
    End Sub

    因为它是工作表代码,所以非常容易安装和自动使用:
  • 右键单击 Excel 窗口底部附近的选项卡名称
  • 选择查看代码 - 这将打开一个 VBE 窗口
  • 粘贴这些东西并关闭 VBE 窗口

  • 如果您有任何疑虑,请先在试用工作表上进行尝试。

    如果您保存工作簿,宏将与它一起保存。
    如果您使用的是 2003 年以后的 Excel 版本,则必须保存
    文件为 .xlsm 而不是 .xlsx

    要删除宏:
  • 如上所述打开 VBE 窗口
  • 清除代码
  • 关闭 VBE 窗口

  • 要了解有关宏的更多信息,请参阅:

    http://www.mvps.org/dmcritchie/excel/getstarted.htm



    http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx

    要了解有关事件宏(工作表代码)的更多信息,请参阅:

    http://www.mvps.org/dmcritchie/excel/event.htm

    必须启用宏才能使其正常工作!

    关于vba - 安全时间戳 - VBA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28454003/

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