Excel VBA锁定单元格中包含特定值的列

Excel VBA锁定单元格中包含特定值的列,excel,vba,locking,Excel,Vba,Locking,我需要锁定列标题中包含特定值的所有列。我试过下列方法,但没有成功。我意识到在锁定列之后,我必须锁定工作表。选择列时出错 谢谢你的帮助 Sub MultipleFindLike() For Each cell In Worksheets("LockTest").Range("A1", Range("A1").End(xlToRight)) If cell Like "COM_*" Then Debug.Print "Cell value = " & cell

我需要锁定列标题中包含特定值的所有列。我试过下列方法,但没有成功。我意识到在锁定列之后,我必须锁定工作表。选择列时出错

谢谢你的帮助

    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

我的问题是工作表已经被锁定,单元格锁定语句无法工作。下面是工作原理。然而,我欢迎更优雅的解决方案

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

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