2015-10-18 72 views
1

我正在寻找一种方法,只需单击一个按钮即可在单元格中输入数据。换句话说,我不希望用户能够通过输入任何内容来更新单元格,他/她必须单击该按钮才能更新单元格。仅通过按钮输入数据/更新单元格

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

我已经创建与它相关的按钮,我想,和宏低于:

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

您也可以使用数据验证。这限制了用户可以放入单元格中的内容,但不限制VBA可以放入单元格中的内容。在要保护的单元格中,选择单元格并在数据选项卡上调用data validation。限制它,例如用户只能把随机选择的数量,他们不太可能曾经尝试进入:

enter image description here

确保你取消ignore blanks。选择适当的输入和错误消息。如果用户试图绕过按钮,这样的事情发生了:

enter image description here

由于概念证明我创建了一个按钮,用下面的代码:

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

一个简单的实验表明,VBA绕过数据验证完全。举例来说,我刚键入“这个作品”到输入框当我点击该按钮,看到这个:

enter image description here

+0

这正是我需要的!我保留了_Ignore Blanks_选项,以便用户在错误的单元格中输入数据时可以删除数据。 你知道我可以根据日期锁定一个单元格(或一行单元格)吗?所以在我每周的时间表中,第一列有日期,我只想要解锁特定日期的相应行(Time in,Time out等),而其他日子则锁定。 –

+0

@FredGonsalves是的,我的想法是使用数据验证(我喜欢因为在进入单元格时弹出的消息),可以与Anthony Sherratt关于工作表保护的想法相结合。您可以在受保护的工作表中解锁特定的单元格(但仍然具有数据验证),然后在Workbook打开事件中更改哪些单元格已锁定,哪些基于日期解锁。以下教程可能会帮助您开始:http://excel-macro.tutorialhorizo​​n.com/excel-vba-range-lockunlock-specific-cells/ –

0

可能最好保护表单,锁定单元格。您可以标记任何仍然希望在其受保护后可编辑的单元格。

ActiveSheet.Protect 
ActiveSheet.Unprotect 

使用上述命令使用VBA事件解除/保护工作表。移动到需要的单元并在他们输入数字/离开所需单元后重新进行保护。

相关问题