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

如何根據Excel中另一個單元格中的值鎖定或解鎖單元格?

在某些情況下,您可能需要根據另一個單元格中的值來鎖定或解鎖單元格。 例如,如果單元格A1包含值“ Accepting”,則需要將範圍B4:B1解鎖。 並在單元格A1包含“拒絕”值時被鎖定。 您如何才能做到這一點? 本文可以為您提供幫助。

使用VBA代碼根據另一個單元格中的值鎖定或解鎖單元格


使用VBA代碼根據另一個單元格中的值鎖定或解鎖單元格

下面的VBA代碼可以幫助您根據Excel中另一個單元格中的值鎖定或解鎖單元格。

1.右鍵單擊工作表選項卡(帶有您需要根據另一個單元格中的值鎖定或解鎖單元格的工作表),然後單擊 查看代碼 從右鍵單擊菜單中。

2.然後將以下VBA代碼複製並粘貼到“代碼”窗口中。

VBA代碼:根據另一個單元格中的值鎖定或解鎖單元格

Private Sub Worksheet_Change(ByVal Target As Range)
    If Range("A1") = "Accepting" Then
        Range("B1:B4").Locked = False
    ElseIf Range("A1") = "Refusing" Then
        Range("B1:B4").Locked = True
    End If
End Sub

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

從現在開始,當您在單元格A1中輸入值“ Accepting”時,範圍B1:B4將被解鎖。

在單元格A1中輸入值“拒絕”時,指定範圍B1:B4將自動鎖定。


相關文章:


最佳辦公效率工具

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底部
按評論排序
留言 (52)
還沒有評分。 成為第一位評論!
網站主持人對此評論進行了最小化
如何鎖定/解鎖變量單元格,例如當單元格為 [=INDEX(A16:L35,MATCH(W5,A16:A35,0),MATCH("PAY",A16:L16,0))]
網站主持人對此評論進行了最小化
我想要一個我無法弄清楚的簡單 VBA 命令,請幫忙
如果單元格 A1 為 Balnk,則單元格 A2 被鎖定,如果單元格 A1 包含任何值,則單元格 A2 被解鎖
同樣,如果單元格 A2 為空白,則單元格 A3 被鎖定,如果單元格 A2 包含任何值,則單元格 A3 被解鎖
依此類推,根據工作表任何部分的要求,盡可能多的單元格。
網站主持人對此評論進行了最小化
嗨,我正在嘗試實現這一點,但是如果工作表已受到保護,我收到一個錯誤,即 VBA 無法設置 Range 類的 Locked 屬性。 取消保護工作表將否定被鎖定的單元格。 如何解決這個問題? 謝謝你的幫助。
網站主持人對此評論進行了最小化
你解決了嗎? 我也有同樣的問題
網站主持人對此評論進行了最小化
親愛的備忘錄,
請嘗試以下 VBA 代碼。

私有子 Worksheet_Activate()
如果不是 ActiveSheet.ProtectContents 則
Range("A1").Locked = False
Range("B1:B4").Locked = False
如果結束
END SUB
私人子工作表_SelectionChange(ByVal Target As Range)
調暗 xRg 作為範圍,xRgA 作為範圍
在錯誤恢復下一頁
Application.EnableEvents = False
設置 xRg = Range("B1:B4")
設置 xRgA = Range("A1")
If Intersect(Target, xRg).Address <> Target.Address _
或者 xRgA = "接受" 然後
Application.EnableEvents = True
退出小組
ElseIf ActiveSheet.ProtectContents _
和相交(目標,xRg)=目標_
然後 xRgA.Value = "拒絕"
xRgA.選擇
如果結束
Application.EnableEvents = True
END SUB
網站主持人對此評論進行了最小化
您將需要使用工作簿中的界面行,因此當您打開文件時,它會保護工作表但允許宏進行更改;

Private Sub Workbook_Open() '這進入“ThisWorkbook”

Worksheets("Order Tool").Protect Password:="Pwd", UserInterFaceOnly:=True

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

私有子 Worksheet_Activate()
如果不是 ActiveSheet.ProtectContents 則
Range("A1").Locked = False
Range("B1:B4").Locked = False
如果結束
END SUB
私人子工作表_SelectionChange(ByVal Target As Range)
調暗 xRg 作為範圍,xRgA 作為範圍
在錯誤恢復下一頁
Application.EnableEvents = False
設置 xRg = Range("B1:B4")
設置 xRgA = Range("A1")
If Intersect(Target, xRg).Address <> Target.Address _
或者 xRgA = "接受" 然後
Application.EnableEvents = True
退出小組
ElseIf ActiveSheet.ProtectContents _
和相交(目標,xRg)=目標_
然後 xRgA.Value = "拒絕"
xRgA.選擇
如果結束
Application.EnableEvents = True
END SUB
網站主持人對此評論進行了最小化
嗨,

是否有可能讓這個 VBA 鎖定一組單元格/基於此解鎖另一組單元格? 例如,範圍 B1:B4 被解鎖,C1:C4 被鎖定為“接受”,然後 B1:B4 被鎖定,C1:C4 被解鎖為“拒絕”?


謝謝,
基督教
網站主持人對此評論進行了最小化
親愛的基督徒,
您的工作表是否受到保護?
網站主持人對此評論進行了最小化
請有人可以幫我解決以下問題。
我想在一張紙上插入學生的照片,根據他們的名字出現在另一張紙上
創建導航平面以協助用戶
將特定工作表分配給用戶
為工作簿創建界面
創建登錄頁面
網站主持人對此評論進行了最小化
親愛的獅子座,
有關 Excel 的任何問題,請隨時在我們的論壇中發帖: https://www.extendoffice.com/forum.html.
您將從我們的 Excel 專業人員那裡獲得更多有關 Excel 的支持。
網站主持人對此評論進行了最小化
你好,

我已經嘗試了您的代碼並進行了一些編輯,但我無法弄清楚我在這裡做錯了什麼?

Private Sub Worksheet_Change(ByVal Target As Range)
如果範圍(“A40”)<>“”那麼
Range("D40:E40").Locked = False
ElseIf Range("A40") = "" 那麼
Range("D40:E40").Locked = True
如果結束
END SUB


我的想法是如果裡面什麼都沒有(A40)。 然後我想被VBA鎖定。 如果 A40 包含某些東西,那麼我希望它被解鎖。 我希望你能看到它的意義。


問候克里斯托弗
網站主持人對此評論進行了最小化
美好的一天,
您的代碼沒有任何問題。 這對我來說很有用。
網站主持人對此評論進行了最小化
你好。 我也無法使此代碼正常工作。 它完全沒有任何作用。 好像連代碼都不存在?? 我對 VBA 很陌生,對它有基本的了解。 這段代碼是按原樣運行的,還是必須添加一些東西才能運行? 或者變成一個宏(我真的不明白為什麼,因為那是指令的記錄,根據我對它們的理解)
網站主持人對此評論進行了最小化
如果我想在單元格 B1、B2、B3 上鎖定特定文本(讓我們說“P”),我想鎖定單元格 E1、E2、E3 的代碼是什麼...... ..............分別。

在此先感謝
網站主持人對此評論進行了最小化
美好的一天
請嘗試以下 VBA 腳本。

Private Sub Worksheet_Change(ByVal Target As Range)
如果 Target.Count = 1 那麼
如果 Target.Address = Range("A1").Address And Target.Value = "A" Then
Range("B1").Locked = True
ElseIf Target.Address = Range("A2").Address And Target.Value = "A" Then
Range("B2").Locked = True
ElseIf Target.Address = Range("A3").Address And Target.Value = "A" Then
Range("B3").Locked = True
如果結束
如果結束
END SUB
網站主持人對此評論進行了最小化
美好的一天!
Мне тоже необходимо заблокировать значение, но только в одной ячейке в зависимости от значения в другой, я попробовала использовать код в комментарии выше, но он не работает(оставила только один параметр для блокировки), но он у меня не работает - при этом нет сообщения об ошибке, ячейка, которая должна быть заблокирована - просто не блокируется, остается активной。 В чем может быть причина?

Вот код, который я использовала:

Private Sub Worksheet_Change(ByVal Target As Range)
如果 Target.Count = 1 那麼
如果 Target.Address = Range("C9").Address And Target.Value = "согласно плану" 那麼
範圍(“C10”)。鎖定=真
如果結束
END SUB
網站主持人對此評論進行了最小化
嗨鬼,
對不起,我不太明白你的意思。 為清楚起見,請附上包含您的數據和所需結果的示例文件或屏幕截圖。
網站主持人對此評論進行了最小化
你好! 需要一些建議。
有沒有辦法不允許更新一個單元格,除非它滿足另一個單元格的條件?
示例:如果單元格 A 未更新,則不允許我更改單元格 B 的值以完成。

感謝反饋。
謝謝!
網站主持人對此評論進行了最小化
親愛的瑪吉,
請嘗試以下 VBA 代碼。

將 PreVal 調暗為字符串
將 NextVal 調暗為字符串
私有子 Worksheet_Activate()
PreVal = 範圍(“A1”)
NextVal = 範圍(“A1”)
END SUB
Private Sub Worksheet_Change(ByVal Target As Range)
If (Target.Count = 1) And (Target.Address = "$A$1") Then
NextVal = 範圍(“A1”)
如果結束
END SUB
私人子工作表_SelectionChange(ByVal Target As Range)
如果 Target.Count = 1 那麼
如果 Target.Address = "$A$1" 那麼
PreVal = 範圍(“A1”)
ElseIf (Target.Address = "$B$1") 然後
如果 PreVal = NextVal 那麼
Application.EnableEvents = False
範圍(“A1”)。選擇
Application.EnableEvents = True
如果結束
如果結束
如果結束
END SUB
網站主持人對此評論進行了最小化
有人可以糾正這個嗎>>>

Private Sub Worksheet_Change(ByVal Target As Range)
對於i = 7至100
If Range("Cells(D, i)") = "Loan" Then
Range("Cells(V, i):Cells(X, i)").Locked = True
ElseIf Range("Cells(D, i)") = "Savings" Then
Range("Cells(Q, i):Cells(U, i)").Locked = True
Range("Cells(W, i):Cells(X, i)").Locked = True
ElseIf Range("Cells(D, i)") = "ShareCap" Then
Range("Cells(Q, i):Cells(U, i)").Locked = True
Range("Cells(V, i)").Locked = True
如果結束
接下來,我
END SUB
網站主持人對此評論進行了最小化
你好! 有人能幫我嗎? 我必須鎖定/凍結一個單元格。 該單元格鏈接到另一個單元格,並且其值每分鐘都在變化。 我要做的是將值保持一定分鐘/小時。 我怎樣才能做到這一點而不復制它並將其粘貼為一個值?
網站主持人對此評論進行了最小化
親愛的米拉,
抱歉幫不上忙,您可以在我們的論壇中發布您的問題: https://www.extendoffice.com/forum.html 從我們的專業人員那裡獲得更多的 Excel 支持。
網站主持人對此評論進行了最小化
嗨,
我對此真的很陌生。
我一直在嘗試將發票系統放在excel中。
我創建了 3 張紙。
1. 發票模板(發票)- 只是每週發送給我的代理的通用發票。

2.準確的數據表(數據表)-發票可以讀取公司名稱地址等,因此如果有任何更改,發票將自動更新。

3. 確切地說是日曆選項卡(Calendar 2018) - 在發票模板中引用,並將相應的日期和發票編號放在實際發票上。

我想做的事。
日曆選項卡將是我的主頁,我為每週添加了一個狀態下拉單元格,其中包含“活動”和“關閉”選項。 如果相應的單元格設置為“關閉”,我想鎖定整個“發票”選項卡。

我希望你們明白我想要做什麼。
在此先感謝。
網站主持人對此評論進行了最小化
親愛的安藤維爾斯。
下面的 VBA 代碼可以幫助您。 請將代碼放入日曆 2018 的工作表代碼窗口中,將 A1 更改為您的下拉單元格。 謝謝你。

Private Sub Worksheet_Change(ByVal Target As Range)
將 xRg 調暗為範圍
在錯誤恢復下一頁
設置 xRg = 相交(目標,範圍(“A1”))
如果 xRg 什麼都不是,則退出 Sub
如果 Target.Validation.Type >= 0 那麼
如果 Target.Value = "已關閉" 則
Sheets("數據表").Protect
ElseIf xRg.Value = "Active" Then
Sheets("數據表").Unprotect
如果結束
如果結束
END SUB
網站主持人對此評論進行了最小化
我在 excel 模板中準備了一個倉庫庫存管理。要交付庫存,我必鬚髮出一個閘門通行證。我想要每個閘門通行證,相應的數據將在每日庫存頁面中更新。隨著閘門通行證序列號的更改,行將被鎖定,下一個將被填滿。
網站主持人對此評論進行了最小化
美好的一天,
如果您可以在此處上傳您的工作簿,那就太好了。 感謝您的評論。
網站主持人對此評論進行了最小化
你能指導我這裡有什麼問題嗎? 先感謝您。

Private Sub Worksheet_Change(ByVal Target As Range)
如果 Range("K:K") = "OVER STOCK" 那麼
Range("S:S").Locked = True
ElseIf Range("K:K") = "SLOW MOVING" Then
Range("S:S").Locked = True
ElseIf Range("K:K") = "NORMAL" Then
Range("S:S").Locked = False
ElseIf Range("K:K") = "SHORTAGE" Then
Range("S:S").Locked = False
如果結束
END SUB
網站主持人對此評論進行了最小化
你能告訴我如何糾正這個問題嗎? 先感謝您。

Private Sub Worksheet_Change(ByVal Target As Range)
If Range("A:A") = "SLOW MOVING" Then
Range("B:B").Locked = True
ElseIf Range("A:A") = "OVER STOCK" Then
Range("B:B").Locked = True
ElseIf Range("A:A") = "NORMAL" Then
Range("B:B").Locked = False
如果結束
END SUB
網站主持人對此評論進行了最小化
不是 VB 專家,我會說你有太多的“Elseif”——如果你把它們都改成 IF 除了最後一個,那麼希望這會起作用。
基本上如果 X 這樣做,如果 Y 這樣做,如果 Z 這樣做,如果這些都沒有 - 這樣做。
網站主持人對此評論進行了最小化
如果我想鎖定一個單元格塊(第 6、7 和 8 行/字母 D 到 U 以及單元格 F5 和 J5)並在我在單元格 E5 中輸入“X”時讓它們解鎖,代碼會怎樣? 提前致謝!
網站主持人對此評論進行了最小化
嗨,MitchyII,
您的意思是指定的單元格塊已提前手動鎖定,只是想通過在單元格 E5 中鍵入“X”來解鎖它們?
如果從單元格 E5 中刪除“X”,您是否要再次鎖定範圍?
我需要問題的更多細節。
感謝您的評論。
網站主持人對此評論進行了最小化
嗨 Mitchyll(或任何人),以 Crystal 為基礎。 我已手動鎖定所有單元格,並根據 G 列中的信息,我希望它們保持鎖定或解鎖狀態。 僅當“c/p”放置在 G 列的前一個單元格中時,才應解鎖 H 列中的示例單元格
網站主持人對此評論進行了最小化
當單元格達到某個值時,是否可以鎖定單元格?
網站主持人對此評論進行了最小化
您好,請問您是什麼原因導致無法使用?

Private Sub Worksheet_Change(ByVal Target As Range)
If Range("A3:A37").Value <> "" Then
Range("B3:B37").Locked = True
ElseIf Range("A3:A37") = "" 那麼
Range("B3:B37").Locked = False
如果結束

If Range("B3:B37").Value <> "" Then
Range("A3:A37").Locked = True
ElseIf Range("B3:B37") = "" 那麼
Range("A3:A37").Locked = False
如果結束

END SUB


非常感謝您提前!!!
網站主持人對此評論進行了最小化
Hi
我剛剛嘗試使用上面的代碼
當我嘗試使用它時,它會顯示類型 13 錯誤。
你能幫我解決這個問題嗎?

感謝
網站主持人對此評論進行了最小化
嗨,
您使用的是哪個 Excel 版本?
網站主持人對此評論進行了最小化
hi

如果我需要根據表格 2(單元格 C4)的聲明鎖定表格 1(單元格 C1)上的單元格,
如果表 1 C4 上為“否”; 表 2 必須被鎖定,並且它必須從表 1 C4 轉移值,
到表 2 C4。

如果在表 1 上為“是”,我必須能夠在表 2 上輸入單元格

謝謝本特
網站主持人對此評論進行了最小化
嗨,請任何人幫助我獲取 VBA 代碼。

如果我從單元格範圍(A1:A1000)“abc”中的下拉列表中選擇,則不將範圍(D1:D1000)鎖定到(F1:F1000)



如果我從單元格範圍(A1:A1000)“abc”中的下拉列表中選擇,則不將範圍(D1:D1000)鎖定到(F1:F1000)



如果我從單元格範圍(A1:A1000)“abc”的下拉列表中選擇,則將範圍(D1:D1000)鎖定為(F1:F1000)



即 D1 到 F1 的相應單元格 A1



A2 用於 D2 到 F2
網站主持人對此評論進行了最小化
我把上面的所有東西都複製到一張紙上。 它工作了一秒鐘,現在我收到錯誤“無法設置 Range 類的 Locked 屬性”。 我什至打開了一張全新的表格並逐字複製了您的示例。 知道發生了什麼嗎?
網站主持人對此評論進行了最小化
你好,

我需要你的幫助。 當我從單元格中選擇 No 選項時,我希望下面的列被鎖定/變灰。

那可能嗎? 我試過這個公式,但效果很好

Private Sub Worksheet_Change(ByVal Target As Range)

如果範圍(“D90”)=“是”那麼

Range("C94:F104").Locked = False

ElseIf Range("D90") = "No" Then

Range("C94:F104").Locked = True

如果結束

END SUB
網站主持人對此評論進行了最小化
嗨斯特菲,
代碼運行良好。
如果要鎖定單元格範圍以防止編輯,則需要在 D90 中選擇“否”選項後手動保護工作表。
由於 D90 在 C94:F104 範圍內,保護工作表後,也無法編輯 D90。
網站主持人對此評論進行了最小化
D90 不在範圍內。 在 C4 上方 94 行
這裡還沒有評論
載入更多
留下你的意見
以訪客身份發帖
×
評價此帖子:
0   字符
推薦地點

關注我們

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