当我尝试执行时间戳用户定义函数时,为什么我 运行 进入 运行 时间错误(范围)

why do i run into a runtime error (range) when im trying to execute a timestamp user defined function

我有一个 sheet,我希望人们手动填充它

这些列中的一个是日期和时间戳,而不是手动输入,因为 excel 上的菜鸟很尴尬我已经创建了一个用户定义的函数并分配给了一个按钮... select 你想要时间戳的单元格...点击我制作的按钮...时间戳出现在单元格中...一切正常

然而

我需要锁定和保护 sheet 上的一些列,只留下 table 供人们填充 当我这样做时,它会遇到有关范围的运行时错误?!我不明白为什么在未受保护的 table 中只有一个单元格需要更新?

下面是用户定义函数的代码

Sub Timestamp()

Dim ts As Date

With Selection
.Value = Now
.NumberFormat = "dd/mm/yyyy h:mm:ss AM/PM"

End With

End Sub

感谢任何帮助

万分感谢

如果您需要在受保护的 sheet 上执行 VBA 代码,我将始终向 protect 推荐您使用 VBA 的作品sheet,以便它可以绕过保护范围并成功更新您的时间戳:

将此代码复制到 ThisWorkBook 将保护特定的 WS 但允许 VBA 在锁定的单元格上写入值

Sub Workbook_Open()
Sheet1.Protect Password:="xxx", UserInterfaceOnly:=True, 
End Sub