• ベストアンサー

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に関して勉強不足だと思いますがよろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • kenpon24
  • ベストアンサー率64% (66/102)
回答No.2

Range("A1:" & Range("B8").End(xlUp).Address).Locked = True じゃだめですか? Range("B8").End(xlUp).Address の部分は変数置き換えでもいいと思うのですが

aki567
質問者

お礼

ありがとうございました。上手く行きました。

その他の回答 (1)

回答No.1

入力の方法や順序、空欄の発生の有無とかで変わるかな。 やりたい事と表のイメージは湧くのですが・・・ シート上にコマンドボタンを設置して、クリックでシート若しくはブック全体を保護してしまうのが簡単かと思いますがダメでしょうか。

aki567
質問者

お礼

なんとか上手く行きました。ありがとうございました。

関連するQ&A