我正在寻找一种只通过点击按钮就能在单元格中输入数据的方法。换句话说,我不希望用户能够通过在其中键入任何内容来更新单元格,他/她必须单击按钮才能更新单元格。
我这样做是为了管理员工的时间表,我想避免任何可能的篡改或伪造。
我已经创建了我想要的按钮,与之关联的宏如下:
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
有没有办法做我想在这里做的事情?
答案 0 :(得分:0)
可能最好保护纸张,锁定细胞。您可以在受保护后标记您仍想要编辑的任何单元格。
ActiveSheet.Protect
ActiveSheet.Unprotect
使用VBA事件使用上述命令取消保护/保护工作表。移动到所需的单元格并在它们输入数字后重新保护/离开所需的单元格。
答案 1 :(得分:0)
您还可以使用数据验证。这限制了用户可以放入单元格中的内容,但不限制VBA可以放入单元格中的内容。在要保护的单元格中,选择单元格并在数据选项卡上调用data validation
。限制它,以便例如用户只能输入一个他们不太可能尝试进入的随机选择的数字:
确保取消选择ignore blanks
。选择适当的输入和错误消息。如果用户试图绕过按钮,则会发生以下情况:
作为概念证明,我使用以下代码创建了一个按钮:
Private Sub CommandButton1_Click()
Range("A1").Value = InputBox("Please enter a value")
End Sub
一个简单的实验表明VBA完全绕过了数据验证。例如,当我点击按钮并看到这个时,我只是在输入框中输入“this works”: