プロが教える店舗&オフィスのセキュリティ対策術

エクセルの条件付き書式で設定した条件にあったセルに色をつけ、かつロックしたい。
色をつけることはできたのですが、ロックするにはどのようにしたらよいのでしょうか?
条件付き書式の設定で、条件に合わなく、色がつかなかったセルはアクティブのままにしたいと思います。
よろしくお願いします。

A 回答 (5件)

回答No2です。

その後よく考えましたら次のようにマクロを組み合わせることでできることが判りました。
初めに例えばA列について条件付き書式を設定して例えば10以上の数値でしたらセルに色を付けることにします。
その後にシート全体を選択して右クリックし、「セルの書式設定」の「保護」のタブでロックのチェックを消します。次いで[校閲]タブで「シートの保護」をクリックして何らのパスワードを設定することなしにOKします。
マクロの設定ですがシート見出しで該当のシート名で右クリックして「コードの表示」を選択します。表示の白い窓には次のコードを入力します。

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Column = 1 And Target.Value >= 10 Then
Target.Select
ActiveSheet.Unprotect
Selection.Locked = True
ActiveSheet.Protect
End If

End Sub

このようにすることでA列で10以上の数値を入力した後ではそのセルの数値が変更できなくなります。他のセルには数値を入力することができます。

この回答への補足

詳細に教えて頂きありがとうございます。
VBAは私には難解で経験ありません。
これを機会に勉強してみようと思います。
まずは、教えて頂いた方法をトライしてみます。

補足日時:2010/07/24 14:32
    • good
    • 0
この回答へのお礼

詳細に教えて頂きありがとうございます。
VBAは私には難解で経験ありません。
これを機会に勉強してみようと思います。
まずは、教えて頂いた方法をトライしてみます。

お礼日時:2010/07/24 14:34

条件付き書式はセルやフォントに色を着けることは出来ても、セルにロックをかける機能が無いのは常識。

条件付き書式で出てくる対話画面を見れば明白。
条件付き書式は、「セルの値」に絡めて書式を左右させるものだが、質問者の言うのでは、セルの値に応じてセルにロックをかけることが出来るか、ということになるが、操作ではそういうことは出来ない。
セルの値に対する条件にもどって、個別のセルに保護をかけられるか、(操作では面倒なので)そしてそれはVBAで出来るか、という問題になる。
質問者は、エクセル操作のみを考えていて、VBAの経験が無いのだろうが
http://www.officepro.jp/excelvba/sheet_ope/index …
など読んで見ると良い。
上記WEBのように、何を許すのかは多種の観点があり、何も許さないのか質問には書いてない。認識をしてない証拠。
上記の「セルの保護については、ロックされたセルが対象となります。セルはデフォルトでは全てロックされているので、特に設定変更をしていなければ全てのセルが保護の対象となります。特定のセルのロックを解除するには『ロックの解除』を参照して下さい。 」が関連してくるが、
範囲を決めて
ロックしないセルにロックを解除し、この際条件を効かす
シートを保護する
で解除してないセルは、入力等自由になる。
ーー
例データ Sheet1 A2:C5
1491
2234
537
1417

Sub test01()
Worksheets("Sheet1").Unprotect
Cells.Select
Selection.Locked = False

For Each cl In Range("A2:C5")
If cl > 10 Then
cl.Locked = True
End If
Next
Worksheets("Sheet1").Protect Contents:=True
End Sub
を実行で10より大の、14,23,17のセルは変更できなくなる。
しかし他のセルは10以上の値にも変更出来る。
そして、値が10以上に変更されたら、そのセルに対してロックを実行する必要がある。
(エクセルの条件付き書式だとセルの値に対して、変更即時反応性があり、ありがたいが、VBAでは自分で面倒を見ないとならない)
それはセルのChangeイベントで捉えることになると思うが、質問者には範囲外と思うので、省略。
    • good
    • 0
この回答へのお礼

詳細に教えて頂きありがとうございます。
VBAは私には難解で経験ありません。
これを機会に勉強してみようと思います。
まずは、教えて頂いた方法をトライしてみます。

お礼日時:2010/07/24 14:31

#1です


チョッと読み違えていたようです、すみません
条件付き書式では、ロックの制御は出来ません
手動になります
マクロでも条件付き書式の条件を捉えるのは難しいです



代替案です
ワークシートイベントとで近いことが出来ます
bookを新規作成して試してみてください
sheet1のシートタブを右クリック、コードの表示を選択
カーソル位置へ下記マクロをコピペ[X]で画面を閉じる

準備
sheet1を選択、[Alt]+[A]でセルすべてを選択し
セルの書式で保護タブのロックのチェックを外す

入力、条件
sheet1のA1:E10の範囲で、セルの値が1~10であれば
セルを黄色にして、ロックをかける

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count <> 1 Then Exit Sub
If Intersect(Target, Range("a1:e10")) Is Nothing Then Exit Sub
ActiveSheet.Unprotect
If Target.Value > 0 And Target.Value <= 10 Then
Target.Interior.ColorIndex = 6
Target.Locked = True
Else
Target.Interior.ColorIndex = 0
Target.Locked = False
End If
ActiveSheet.Protect
End Sub

興味があれば試して見てください
参考まで
    • good
    • 0
この回答へのお礼

詳細に教えて頂きありがとうございます。
VBAは私には難解で経験ありません。
これを機会に勉強してみようと思います。
まずは、教えて頂いた方法をトライしてみます。

お礼日時:2010/07/24 14:31

シートに保護を掛けることをしないであるセルのみに保護を設定することはできません。


しかも条件に有ったセルのみとなります条件に合ったデータを入力することすらできない状態になりましょう。
    • good
    • 0
この回答へのお礼

そうなんですね。
ありがとうございます。

お礼日時:2010/07/24 14:36

シート保護のことかな?


[Alt]+[T][P][P]、[OK]

参考まで

この回答への補足

早々の回答ありがとうございます。
質問が伝わりづらいと思いますが、シート全体を保護するのではなく、条件にあったセルのみをロックにしたいんです。

補足日時:2010/07/24 01:51
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています