エクセル住所録や成績表などで誤って計算式が入っているセルを消されないように、シートの保護を設定していることありませんか?
これで安心と思ってユーザーフォームに配置された、テキストボックスの値をセルに転記しようとしたら、エラー表示!!
とりっぷぼうる
VBAの動作確認が終わり、仕上げにシートの保護したらエラーっていう経験思い出しますね。
まずは基本からおさらいしましょう。
シートを保護・解除するVBAコード
まずは一番シンプルで、いつも使っているシートの保護・解除するVBAコードで、ユーザーフォームに配置したコマンドボタンに書いているVBAコードです。
シートの保護するVBAコード
シートの保護解除するVBAコード
シートの解除で始まり保護で終える
VBAコードはSubで始まりEnd Subでプログラムが1行目から順番に作業を進めていきます。
シートの保護の状態では、セルにテキストボックスの値を書き写したり、並べ替えをしたりという作業(VBAコード)は一切できないのでエラーになってしまうので、下記のような手順でVBAコードを書きましょう。
- シートの保護解除をする
- 本来の作業を行うVBAコード
- シートの保護をする
このように本来のVBAコードの1行前にシート保護解除コード、1行後にシート保護コードを入れるだけで、直感的には常にシートの保護状態になっているようにエクセルを操作できますよ。
これは、セルS2にテキストボックスの値を書き込みメッセージ表示するのですが、シートが保護されているとセルS2に書き込めないので、まず解除して本来の作業を行い、保護を設定して終了するようになっています。
とりっぷぼうる
とても簡単なので、ぜひ活用してくださいね。
パスワード設定してシートの保護・解除をする方法
最初は使っていたのですが毎回パスワードを求められるので、 手間が面倒になり今は使っていないのですが、シートの保護・解除の時にパスワードを設定することができます。
パスワード付きシートの保護・解除
パスワードは「tripbowl」にします。
パスワードを入力してシートの保護を解除する
エラー防止の為、「パスワードが違います」とメッセージを表示準備します
シートの保護関連VBAコード