我可以使用巨集透過密碼保護 Excel 電子表格中的儲存格嗎?

我可以使用巨集透過密碼保護 Excel 電子表格中的儲存格嗎?

我有一個 Excel 電子表格設定為時鐘。員工開啟該週的時鐘文件,並在指定位置填寫該週的結束日期。從現在開始,僅使用滑鼠進行輸入。員工為一週中的某一天以及打卡、去吃午餐、午餐後回來和回家的動作選擇合適的單元格。將遊標定位在正確的儲存格上後,他們單擊一個按鈕(連結到巨集的按鈕),該按鈕會填入操作的正確時間。我不知道如何阻止他們只進入他們想要的單元格並在他們想要的任何時間輸入。我嘗試添加使用密碼保護單元格作為按鈕巨集的一部分,但未能使其正常工作。有人有辦法保護細胞,讓員工無法改變時間嗎?或者,有一種更簡單的方法可以同時完成這一切?

答案1

您的使用者有權利寫入 Excel 檔案...

我不認為你可以在 Excel 中從技術上強制執行此操作;我想你想要一個替代軟體。不過,我很欽佩你使用 Excel 巨集的技巧。

詳細說明:

  • 如果使用者可以修改儲存格,則不會受到使用者簡單地自行修改儲存格(鍵入值)的保護。
  • 如果使用者無法修改儲存格,則使用者只需鍵入值即可保護該儲存格,但也無法從巨集向其中寫入正確的資訊。

這與加密單元不同,加密單元甚至無法在沒有密碼的情況下進行讀取。

我認為市面上有很多考勤卡軟體,其中大多數都可以將收集的數據匯出到 Excel 中。如果我處於您的位置,我會將我的視野擴展到電子表格之外。

答案2

您可以禁止 VBA 事件處理程序對儲存格進行變更:

Private Sub Worksheet_Change(ByVal Target As Range)
    Application.EnableEvents = False
    With Target
        If If Not Intersect(Target, Range("A1:B10")) Is Nothing Then Application.Undo
    End With
    Application.EnableEvents = True
End Sub

我不知道透過 VBA 巨集設定單元格的值是否會導致此事件觸發。我知道它不會因公式引起的變化而觸發。但是您可以輕鬆定義一個全域變量,以允許在更改單元格之前設定更改並在之後取消設定。

您也可以嘗試擷取該Worksheet_SelectionChange事件,以防止使用者將遊標定位在儲存格內。您可以針對不允許的儲存格將遊標重新定位到某個預先定義的儲存格(例如 A1),或者編寫一些更複雜的程式碼來記住最後允許的遊標位置並重新定位到它。

相關內容