[英]Lock/Unlock a cell using conditional formatting
如何使用條件格式基於另一個單元格(A2)中的值(是/否)鎖定/解鎖單元格(A1)?
在線上有很多資源顯示如何執行此操作。 這是一篇有助於向我解釋的文章: http : //database.ittoolbox.com/groups/technical-functional/excel-l/how-to-lockunlock-an-excel-cell-based-on-the-contents-另一個單元的4625040
萬一鏈接死了,這是要點:
若要執行您描述的操作,您將需要創建一個事件過程,只要工作表的內容發生更改,Excel就會調用該過程。 首先打開Visual Basic窗口(按Alt + F11)。 您應該在左上方的窗格中看到s樹視圖; 在該視圖中找到工作表的名稱,然后雙擊該名稱。 這將在右側的大窗格中打開與該工作表關聯的代碼模塊。
在大窗格的頂部,您將看到兩個下拉列表。 最初,左邊的將顯示(常規),而右邊的將顯示(聲明)。 單擊左側列表右端的三角形箭頭,然后選擇“工作表”。
Excel將自動添加SelectionChange事件過程的“框架”。 那不是我們想要的,但這不會造成任何傷害。
Excel還將右側下拉列表中的選擇更改為SelectionChange。 打開該列表,然后選擇“更改”。 Excel將添加第二個事件過程,該過程應如下所示:
Private Sub Worksheet_Change(ByVal Target As Range)
End Sub
閃爍的光標將位於此骨架的空白行上。
您想要向Worksheet_Change過程添加代碼以檢查G2單元格的內容,並更改G3:G66范圍的狀態。 這需要一個IF語句和幾個賦值語句:
Private Sub Worksheet_Change(ByVal Target As Range)
If ActiveSheet.Cells(2, 7).Text = "X" Then
ActiveSheet.Range(Cells(3, 7), Cells(66, 7)).Locked = True
Else
ActiveSheet.Range(Cells(3, 7), Cells(66, 7)).Locked = False
End If
End Sub
IF語句測試單元格G2的當前內容(Cells()方法采用行-2-和列號-7-標識單元格;列G為第七列)。 這兩個賦值語句更改范圍的Locked屬性。 一個鎖定單元格,另一個鎖定單元格。
當然,如果您的代碼更復雜,那么您將希望避免每次工作表上的任何內容更改時都運行它。 為了避免執行代碼過於頻繁,可以使用傳遞給事件過程的Target參數:
If Intersect(ActiveSheet.Cells(2, 7), Target) _
Is Not Nothing Then
此條件語句使用Intersect()函數來確定單元格G2(ActiveSheet.Cells(2,7))是否包含在Target中。
因此,完整的事件過程如下所示:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(ActiveSheet.Cells(2, 7), Target) Is Not Nothing Then
If ActiveSheet.Cells(2, 7).Text = "X" Then
ActiveSheet.Range(Cells(3, 7), Cells(66, 7)).Locked = True
Else
ActiveSheet.Range(Cells(3, 7), Cells(66, 7)).Locked = False
End If
End If
End Sub
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.