只能通过button在/更新单元格中input数据

我正在寻找一种方法,只需点击一个button就可以在单元格中input数据。 换句话说,我不希望用户能够通过input任何东西来更新单元格,他/她必须点击button才能更新单元格。

我正在这样做来pipe理我的员工的时间表,我想避免任何可能的篡改或伪造。

我已经创build了我想要的button,并且与其关联的macros如下所示:

Sub MyTimeStamp() Dim DT ' ' MyTimeStamp Macro ' ' Keyboard Shortcut: Ctrl+t ' DT = Format(Now, "hh:mm:ss AM/PM") ActiveCell.Select Selection.NumberFormat = "hh:mm AM/PM" ActiveCell.Value = DT End Sub 

有没有办法做我想在这里做什么?

你也可以使用数据validation。 这限制了用户可以放入单元格的内容,而不是VBA可以放入单元格的内容。 在要保护的单元格中,select数据选项卡上的单元格和调用data validation 。 限制它,以便例如用户只能放置一个他们不太可能尝试input的随机select的号码:

在这里输入图像说明

确保您取消selectignore blanks 。 select适当的input和错误消息。 如果用户试图绕过button,就会发生这样的事情:

在这里输入图像说明

作为概念validation,我使用下面的代码创build了一个button:

 Private Sub CommandButton1_Click() Range("A1").Value = InputBox("Please enter a value") End Sub 

一个简单的实验表明,VBA完全绕过数据validation。 例如,当我点击button并看到以下内容时,我只是在input框中input“this works”

在这里输入图像说明

可能最好保护表格,locking细胞。 你可以标记任何单元格,你仍然可以编辑它的保护后。

 ActiveSheet.Protect ActiveSheet.Unprotect 

使用上述命令使用VBA事件解除/保护工作表。 移动到所需的单元格,并在inputgraphics/离开所需单元格后重新进行保护。