2014-04-03 87 views
1

我正在創建一個相當大的用戶輸入模板,並且我想使用某些VBA代碼將某些單元格設置爲「解鎖」。如果另一個單元格的值爲「x」,則將單元格範圍設置爲解鎖狀態

例如,如果單元格H9 = 5,則將單元格M5:X5格式化爲解鎖,並將此代碼一直運行到用戶輸入工作表的下方(約爲2000行,爲每行運行代碼)。

謝謝 TM

+0

我能夠讓VBA解鎖我的範圍中的第一行,但我無法獲得代碼,它將移動到下一行並重復。例如: 如果H9 = 5,則解鎖J9:X9。然後移動到下一行,如果H10 = 5,解鎖J10:X10。然後移動到下一行並重復,直到2000行 – user3495305

回答

0

對於單行:

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年,以滿足您的需求。這假定保護已經從工作表中刪除。

+0

謝謝Gary的學生 – user3495305

+0

現在,我需要將這一行逐行應用到表格中。那麼有什麼會這樣做: 如果H9 = 5,然後解鎖J9:X9。 然後移動到下一行,如果H10 = 5解鎖J10:X10。 然後移動到下一行並通過2000行重複等 – user3495305

0

我會在下面的代碼

更改內容添加到一個Worksheet Event

  1. 右鍵單擊您的工作表標籤
  2. 查看....代碼
  3. 複製並粘貼電池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 
    
相關問題