2016-04-11 9 views
0

マクロは、行2の3つのセル([ユーザーは編集できない])のみをロックし、そのためには以下の関数を記述します。VBA内のセルをロックする

Private Sub MasterHeaderLock(wksMaster As Worksheet) 
    wksMaster.Activate 
    ActiveSheet.Unprotect 
    wksMaster.Range(wksMaster.Cells(2, 7), wksMaster.Cells(2, 9)).Locked = True 
    ActiveSheet.Protect 
End Sub 

しかし、この手順ではシート全体がロックされます。何を修正する必要があるか教えてください。

+2

シートがデフォルトとしてロックされている、あなたはそうかもしれないwksMaster.Cells.Lockes 3行目= falseをあなたの –

+2

= cells.lockedで開始する必要があります。あなたのコメントを回答として投稿することができます。 –

+0

どちらが正しいそれを行います虚偽または似たような – refactor

答えて

0
Sub Test() 
Call MasterHeaderLock(Worksheets("Sheet1")) 
End Sub 

Private Sub MasterHeaderLock(wksMaster As Worksheet) 
    wksMaster.Cells.Locked = False 
    wksMaster.Unprotect 
    wksMaster.Range(wksMaster.Cells(2, 7), wksMaster.Cells(2, 9)).Locked = True 
    wksMaster.Protect 
End Sub 
+0

6,8,10行目でソリューションを更新したい場合があります。 6行目: 'wksMaster.Cells.Locked = False'。そして8,10行目では、 'ActiveSheet'ではなく' wksMaster'でなければなりません。最後に、 'wksMaster.Activate'を削除してください。それは不要です。 – Ralph

+0

@Ralph、あなたの修正をありがとう –

関連する問題