我正在創建一個相當大的用戶輸入模板,並且我想使用某些VBA代碼將某些單元格設置爲「解鎖」。如果另一個單元格的值爲「x」,則將單元格範圍設置爲解鎖狀態
例如,如果單元格H9 = 5,則將單元格M5:X5格式化爲解鎖,並將此代碼一直運行到用戶輸入工作表的下方(約爲2000行,爲每行運行代碼)。
謝謝 TM
我正在創建一個相當大的用戶輸入模板,並且我想使用某些VBA代碼將某些單元格設置爲「解鎖」。如果另一個單元格的值爲「x」,則將單元格範圍設置爲解鎖狀態
例如,如果單元格H9 = 5,則將單元格M5:X5格式化爲解鎖,並將此代碼一直運行到用戶輸入工作表的下方(約爲2000行,爲每行運行代碼)。
謝謝 TM
對於單行:
Sub UnLockIt()
If Range("H9").Value = 5 Then
Range("H5:M5").Locked = False
End If
End Sub
爲2000行
Sub UnLockIt()
If Range("H9").Value = 5 Then
Range("H5:M2004").Locked = False
End If
End Sub
修改2004年,以滿足您的需求。這假定保護已經從工作表中刪除。
謝謝Gary的學生 – user3495305
現在,我需要將這一行逐行應用到表格中。那麼有什麼會這樣做: 如果H9 = 5,然後解鎖J9:X9。 然後移動到下一行,如果H10 = 5解鎖J10:X10。 然後移動到下一行並通過2000行重複等 – user3495305
我會在下面的代碼
更改內容添加到一個Worksheet Event
H5:H10
將運行M5:X10
等代碼 Private Sub Worksheet_Change(ByVal Target As Range)
Dim rng1 As Range
Dim rng2 As Range
Set rng1 = Intersect(Target, Range("H:H"))
If rng1 Is Nothing Then Exit Sub
With Application
.ScreenUpdating = False
.EnableEvents = False
End With
For Each rng2 In rng1
Cells(rng2.Row, 13).Resize(1, 12).Locked = False
Next rng2
With Application
.ScreenUpdating = True
.EnableEvents = True
End With
End Sub
我能夠讓VBA解鎖我的範圍中的第一行,但我無法獲得代碼,它將移動到下一行並重復。例如: 如果H9 = 5,則解鎖J9:X9。然後移動到下一行,如果H10 = 5,解鎖J10:X10。然後移動到下一行並重復,直到2000行 – user3495305