2017-04-20 15 views
0

基本的に、B1:< 0、B2:B7 = 0、B2:B7が空白の場合、B2:B7をロックすることができます。0より小さいセルと空のセルをロックするExcel

これまで私がこれまで行ってきたことです。

SN:私はこれを開始したばかりなので、私はちょっとしたことについてはまったく分かりません。

Sub test_lock() 

If Range("B1") < 0 And Range("B2:B7") Then 
    Range("B2:B7").Locked = True 

ElseIf Range("B2:B7") > 0 Then 
    Range("B2:B7").Locked = False 

End If 

For Each rngTemp In Range("B2:B7").Cells 
     With rngTemp 
      If .Value > 0 Or Len(.Value) > 0 Then 
       .Locked = False 
      End If 
     End With 
    Next 
End Sub 

答えて

0

このような場合はどうですか。それは全範囲をロックし、次に必要なものをロック解除するだけです。

範囲を構築し、すべてを一度にロック解除すると、セルの数が多いほど高速に動作するはずです。

コメントアウトされた行に注意してください。これは、ロックされていないセルの色を緑色にすることで、簡単に確認できます。

Sub temp() 
Dim rCell As Range 
Dim inRng As Range 
Dim rRng As Range 

set myRng = Range("A1:B2") 

myRng.Locked = True 
For Each rCell In myRng 
    If rCell.Value > 0 Then 
     If rRng Is Nothing Then 
      Set rRng = rCell 
     Else 
      Set rRng = Application.Union(rRng, rCell) 
     End If 
     End If 
    Next 
    rRng.Locked = False 
    'rRng.Interior.ColorIndex = 4 
End Sub 
+0

ご協力いただきありがとうございます。動作していると思いますが、少し問題があります。それは私に与えている実行時エラー '91':オブジェクト変数またはWithブロック変数が設定されていないときにハイライトをデバッグするrRng.Locked = False – sa7

+0

ロックを解除する必要があるセルはありますか? rRngが空の場合、エラーが発生する可能性があります。また、私の最初の範囲が異なっていることに気がつきました。 – gtwebb

関連する問題