2015-10-18 91 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事件解除/保護工作表。移動到需要的單元並在他們輸入數字/離開所需單元后重新進行保護。

相關問題