2017-04-05 12 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 
関連する問題