2017-04-05 172 views
0

我需要锁定列标题中包含特定值的所有列。我试过以下没有成功。我意识到我必须在锁定列后锁定工作表。选择列时出现错误。Excel VBA锁列包含单元格中的特定值

我很感谢您的帮助。

Sub MultipleFindLike() 
    For Each cell In Worksheets("LockTest").Range("A1", Range("A1").End(xlToRight)) 
    If cell Like "COM_*" Then 
     Debug.Print "Cell value = " & cell 
     Debug.Print "Cell Column = " & cell.Column 
     Range(cell, Range(cell).End(xlDown)).Select 
    End If 
    Next 
Worksheets("LockTest").Protect Password:="mypass" 
Debug.Print "Done ..." 

End Sub 
+0

你不会对你所做的选择做任何事情。使用select也不明智。最好使用单元格显式地址并使用它来锁定它们。例如Range(“A:A”)。Locked = true – Luuklag

回答

0

我的问题是,工作表已被锁定,锁定单元格的声明不起作用。以下是工作内容。不过,我欢迎更优雅的解决方案。

Sub LockSelectedCells(sheetName As String) 
    Dim cell As Range 
    Dim sheetProtectPassword As String 
    sheetProtectPassword = Range("Reports!sheetProtectPassword") 
' Debug.Print "sheetProtectPassword=" & sheetProtectPassword 
    Worksheets(sheetName).Unprotect Password:=sheetProtectPassword 
    For Each cell In Worksheets(sheetName).Range("A1", Range("A1").End(xlToRight)) 
    If cell.Value Like "COM_*" Then 
'  Debug.Print "Cell value = " & cell 
'  Debug.Print "Cell Column = " & cell.Column 
'  Debug.Print "A" & cell.Column 
     cell.EntireColumn.Locked = False 
    End If 
    Next 
Worksheets(sheetName).Protect Password:=sheetProtectPassword 
Debug.Print "Done ..." 

End Sub 
相关问题