- ベストアンサー
VBAで特定の範囲の入力が出来ないようにしたいのですが
A1:B7までの表があるとします。A列B列に入力して行きます。A列入力後にB列(同行)に何かしら値が入ったら。(例えばB5)A1:B5に入力できないようにしたいのですが、その場合にどのように記述すれば良いのでしょうか。考えているのはA1:B7のロックを解除しておいてシートを保護しておく、そしてB列に入ればそこまでの範囲にロックをかけると言う感じですが。保護解除のパスワードは123とします。 Sub ロックをかける() ActiveSheet.Unprotect"123" Range("A1:XX).Locked=True ActiveSheet.Protect"123" End Sub としたのですが、XXのところが上手くできません。 Range("B8").End(xlup)をいれて見るとエラーが出ます。そこで変数(String型)を作ってこの文でその該当セルの値を代入し、XXのところに変数を置いてみてもやはりエラーが出ます。 この表は本来もう少し大きな表で、時間外勤務を管理しようとしていて上席者がB列に承認した印に値をいれて実行するとそれまでの値が改ざんできないようにすると言うのが目的なのです。 まだまだVBAに関して勉強不足だと思いますがよろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
Range("A1:" & Range("B8").End(xlUp).Address).Locked = True じゃだめですか? Range("B8").End(xlUp).Address の部分は変数置き換えでもいいと思うのですが
その他の回答 (1)
- takachan7272
- ベストアンサー率29% (179/616)
入力の方法や順序、空欄の発生の有無とかで変わるかな。 やりたい事と表のイメージは湧くのですが・・・ シート上にコマンドボタンを設置して、クリックでシート若しくはブック全体を保護してしまうのが簡単かと思いますがダメでしょうか。
お礼
なんとか上手く行きました。ありがとうございました。
お礼
ありがとうございました。上手く行きました。