Note: The other languages of the website are Google-translated. Back to English

在Excel中輸入或輸入數據後如何鎖定或保護單元格?

假設您有一個工作表,並且只有一定範圍的空白單元格需要輸入數據,並且在完成輸入數據之後,您需要自動鎖定這些單元格以防止再次更改。 您如何才能做到這一點? 本文可以為您提供幫助。

在數據輸入或使用VBA代碼輸入後鎖定或保護單元格


在數據輸入或使用VBA代碼輸入後鎖定或保護單元格

例如,空白單元格的特定範圍是A1:F8。 在Excel中輸入數據後,請執行以下操作以鎖定這些單元格。

1.請先解鎖此範圍,選擇單元格並單擊鼠標右鍵,然後選擇 單元格格式 在右鍵菜單中,然後在 單元格格式 對話框,取消選中 鎖定 下框 保護 標籤,最後點擊 OK 按鈕。 看截圖:

2。 點擊 回顧 > 保護工作表。 並指定密碼以保護此工作表。

3.右鍵單擊工作表標籤,選擇 查看代碼 從右鍵單擊菜單中。 然後將下面的VBA代碼複製並粘貼到“代碼”窗口中。 看截圖:

VBA代碼:數據輸入或輸入後鎖定或保護單元格

Dim mRg As Range
Dim mStr As String

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Range("A1:F8"), Target) Is Nothing Then
    Set mRg = Target.Item(1)
    mStr = mRg.Value
End If
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim xRg As Range
    On Error Resume Next
    Set xRg = Intersect(Range("A1:F8"), Target)
    If xRg Is Nothing Then Exit Sub
    Target.Worksheet.Unprotect Password:="123"
    If xRg.Value <> mStr Then xRg.Locked = True
    Target.Worksheet.Protect Password:="123" 
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Range("A1:F8"), Target) Is Nothing Then
    Set mRg = Target.Item(1)
     mStr = mRg.Value
End If
End Sub

備註:在代碼中,“ A1:F8”是您需要輸入數據的範圍; “ 123”是此受保護工作表的密碼。 請根據需要更改它們。

4。 按 其他 + Q 同時關閉按鍵 Microsoft Visual Basic for Applications 窗口。

將數據輸入到範圍A1:F8的單元格後,它們將被自動鎖定。 如果您嘗試更改此範圍的任何單元格內容,則會出現一個提示對話框。 看截圖:


相關文章:


最佳辦公效率工具

Kutools for Excel 解決了你的大部分問題,並將你的生產力提高了 80%

  • 重用: 快速插入 複雜的公式,圖表 以及您以前使用過的任何東西; 加密單元 帶密碼 創建郵件列表 並發送電子郵件...
  • 超級公式欄 (輕鬆編輯多行文本和公式); 閱讀版式 (輕鬆讀取和編輯大量單元格); 粘貼到過濾範圍...
  • 合併單元格/行/列 不會丟失數據; 拆分單元格內容; 合併重複的行/列...防止細胞重複; 比較範圍...
  • 選擇重複或唯一 行; 選擇空白行 (所有單元格都是空的); 超級查找和模糊查找 在許多工作簿中; 隨機選擇...
  • 確切的副本 多個單元格,無需更改公式參考; 自動創建參考 到多張紙; 插入項目符號,複選框等...
  • 提取文字,添加文本,按位置刪除, 刪除空間; 創建和打印分頁小計; 在單元格內容和註釋之間轉換...
  • 超級濾鏡 (將過濾方案保存並應用於其他工作表); 高級排序 按月/週/日,頻率及更多; 特殊過濾器 用粗體,斜體...
  • 結合工作簿和工作表; 根據關鍵列合併表; 將數據分割成多個工作表; 批量轉換xls,xlsx和PDF...
  • 超過 300 項強大的功能. 支持 Office / Excel 2007-2021 和 365。支持所有語言。 在您的企業或組織中輕鬆部署。 完整功能 30 天免費試用。 60 天退款保證。
kte選項卡201905

Office選項卡為Office帶來了選項卡式界面,使您的工作更加輕鬆

  • 在Word,Excel,PowerPoint中啟用選項卡式編輯和閱讀,發布者,Access,Visio和Project。
  • 在同一窗口的新選項卡中而不是在新窗口中打開並創建多個文檔。
  • 將您的工作效率提高 50%,每天為您減少數百次鼠標點擊!
officetab底部
按評論排序
留言 (74)
5中的5評分 · 1評級
網站主持人對此評論進行了最小化
您好,我有一個範圍為 A3:AN219 的電子表格,我想在輸入完成時保護這個範圍。 請幫助我。 我嘗試了上面的代碼,但它對我不起作用
網站主持人對此評論進行了最小化
重新打開excel文件時這不起作用請幫助
網站主持人對此評論進行了最小化
試試這個代碼: Private Sub Worksheet_Change(ByVal Target As Range) Dim MyRange As Range Set MyRange = Intersect(Range("A1:D100"), Target) If Not MyRange Is Nothing Then Sheets("Sheet1").Unprotect 密碼: ="hello" MyRange.Locked = True Sheets("Sheet1").Protect password:="hello" End If End Sub 記得更改範圍 (A1:D100)、密碼 (hello) 和工作表 (Sheet1) 名稱/數字如果它不符合上述:)
網站主持人對此評論進行了最小化
感謝您的代碼。 請讓我知道如何在保存文件後自動鎖定單元格(類似於您列出的單元格)
網站主持人對此評論進行了最小化
您好,先生,我在 VBA 中將此代碼與其他 cobe 一起使用時遇到了相同代碼的一個問題。 請給我一些解決方案謝謝和問候Gourav
網站主持人對此評論進行了最小化
親愛的古拉夫,
抱歉不能解決這個問題。
網站主持人對此評論進行了最小化
我嘗試了代碼,似乎有點工作。 但是,它確實允許我刪除輸入到單元格中的日期,但只會在我嘗試輸入其他內容時阻止我。 有沒有辦法讓數據不被刪除?
網站主持人對此評論進行了最小化
親愛的斯泰西,
我的情況沒有出現同樣的問題。 該代碼阻止用戶輸入和刪除指定範圍內的數據。 您會提供您的 Office 版本以供進一步測試嗎?
網站主持人對此評論進行了最小化
對於自此評論以來可能在這裡偶然發現的任何人。 如果您每次填寫單元格時都必須解鎖工作表,那麼您首先需要 - 解鎖電子表格 - 突出顯示代碼應用到的工作表區域 - 右鍵單擊並轉到“格式化單元格” - 轉到最右邊名為“保護”的選項卡並取消選中“鎖定”部分(即使它顯示為實心填充而不是勾號)之後,您將能夠在多個單元格中輸入數據,而無需每次都解鎖。 請記住,如果您需要重新訪問鎖定的單元格以刪除或編輯信息,您可能需要重複上述步驟。 希望這可以幫助。
網站主持人對此評論進行了最小化
我喜歡只鎖定已編輯的單元格。 一旦我在空單元格中輸入任何數據,我需要鎖定已編輯的單元格以自動鎖定,而不是空單元格。
網站主持人對此評論進行了最小化
親愛的蘇哈希,
使用代碼後,只有已編輯的單元格被鎖定在指定範圍內。 您仍然可以根據需要在指定範圍內的空單元格中輸入數據。 空白單元格填完後會自動鎖定。
網站主持人對此評論進行了最小化
不,它在將數據輸入到範圍內的單元格後立即鎖定整個範圍
網站主持人對此評論進行了最小化
親愛的普拉迪普,
您使用哪個 Office 版本?
網站主持人對此評論進行了最小化
感謝編碼,但我有一個問題,將 2 個編碼放在 1 張紙上,請幫忙。
網站主持人對此評論進行了最小化
親愛的費爾,
抱歉不能解決這個問題。
網站主持人對此評論進行了最小化
嗨,
先生,我想在一次輸入數據後鎖定!
就像我正在關註一位客戶並寫下狀態,然後任何員工都無法編輯或修改它!
網站主持人對此評論進行了最小化
美好的一天,
這篇文章中的方法也可以幫助你解決這個問題。
網站主持人對此評論進行了最小化
單元格甚至不可編輯...出了什麼問題不明白請幫忙
網站主持人對此評論進行了最小化
美好的一天,
首先,您需要將指定的單元格設置為 Unlocked 進行編輯,然後保護工作表。 最後應用 VBA 腳本。
網站主持人對此評論進行了最小化
它必須編碼嗎?
網站主持人對此評論進行了最小化
Hi


我希望它在進入範圍內的一個單元格後鎖定範圍請你能告訴我我需要如何編輯它來做到這一點謝謝
網站主持人對此評論進行了最小化
Hi
編輯代碼有沒有一種方法可以在將數據輸入到該範圍內的一個單元格後鎖定該範圍內的所有單元格? 所以他們只能在範圍內的一個單元格中輸入數據,而不是多個。


感謝
網站主持人對此評論進行了最小化
親愛的傑基,
下面的 VBA 代碼可以幫助您解決問題。

Private Sub Worksheet_Change(ByVal Target As Range)
將 xRg 調暗為範圍
將 xSRg 調暗為範圍
在錯誤恢復下一頁
設置 xSRg = Range("A1:F8")
設置 xRg = 相交(xSRg,目標)
如果 xRg 什麼都不是,則退出 Sub
Target.Worksheet.Unprotect 密碼:="123"
xSRg.Locked = 真
Target.Worksheet.Protect 密碼:="123"
END SUB
網站主持人對此評論進行了最小化
你好,
有沒有辦法只鎖定單元格而不是整個工作表? 例如,如果用戶在 A2 中輸入“是”,則 A2 將立即鎖定以不允許任何更改。 我仍然希望其他人也可以編輯任何其他單元格。 謝謝!
網站主持人對此評論進行了最小化
嗨史密斯,
下面的 VBA 代碼可以幫助您解決問題。 請試一試,感謝您的評論。

Private Sub Worksheet_Change(ByVal Target As Range)
在錯誤恢復下一頁
Target.Worksheet.Unprotect 密碼:="123"
目標鎖定=真
Target.Worksheet.Protect 密碼:="123"
END SUB
網站主持人對此評論進行了最小化
早上好,

有沒有辦法阻止用戶右鍵單擊“查看代碼”並查看管理員密碼?
網站主持人對此評論進行了最小化
沒關係,我明白了。
網站主持人對此評論進行了最小化
如何? 我沒明白...
網站主持人對此評論進行了最小化
你好,需要一些幫助


我實際上為一大群人做一個工作名冊,所有人都可以訪問這張表,以便他們可以輸入他們的休假/年假等請求。但是我只想限制每個人的休假人數一天(最多 5 個休假),並且在當天輸入 5 個休假請求後,沒有其他人可以填寫該特定日期的請求。


是否有任何代碼/函數可以計算每天特定請求的數量,然後當達到配額時,其他單元格被阻止請求不超過? 提前致謝
網站主持人對此評論進行了最小化
美好的一天,
歡迎在我們的論壇發表任何問題: https://www.extendoffice.com/forum.html.
您將從我們的專業人士或其他 Excel 粉絲那裡獲得更多 Excel 支持。
網站主持人對此評論進行了最小化
嗨 - 這篇文章很有幫助,而且效果很好。 但是,當單元格鎖定時,我的過濾器會停止工作。 有沒有解決的辦法? 謝謝!
網站主持人對此評論進行了最小化
Hi Kim,
抱歉幫不上忙。 默認情況下,過濾器功能在受保護的工作表中處於禁用狀態。
網站主持人對此評論進行了最小化
謝謝人,這救了我的工作:D
網站主持人對此評論進行了最小化
當我退出當前工作的文件並再次打開它時,我發現新單元格在數據輸入後沒有鎖定,只有前一個鎖定單元格找到了鎖。 任何解決方案
網站主持人對此評論進行了最小化
嗨,納茲穆爾,
在關閉工作簿之前,您需要將工作簿另存為啟用宏的 Excel 工作簿。
這裡還沒有評論
載入更多
留下你的意見
以訪客身份發帖
×
評價此帖子:
0   字符
推薦地點

關注我們

版權所有©2009 - 萬維網。extendoffice.com。 | 版權所有。 供電 ExtendOffice。 |
Microsoft和Office徽標是Microsoft Corporation在美國和/或其他國家的商標或註冊商標。
受Sectigo SSL保護