エクセルで様々な計算式などが入っている表を作った時に、誤って計算式などを消されないようにシートの保護設定をしたら、マクロエラーになったことありませんか?
原因は、シートの保護を設定するとユーザーフォームのテキストボックスからの入力もできなくなってエラーになっているので、Protectメソッドを使用してシート保護・解除を自動化すれば解決しますので、使い方をご紹介します。
Protectで保護・Unprotectで解除
エクセルシートの保護をする時に、ワークシートの「校閲」から「シートの保護」で行わずにVBAコードで保護・解除ができるようになります。
この方法ならば、コマンドボタンなどに直接書き込めるので、シートの保護設定をしたからといって、入力・並べ替えなどもできるようになります。
使い方は簡単で、作業開始直前に保護解除(Unprotect)をして、作業終了直前にシートの保護(Protect)をすれば完成なので、既存のVBAコードに付け足すだけです。
Workbookで設定の場合
エクセルファイルを開いたら自動的にシートの保護をする設定方法は、「Microsoft Visual VasicのVBA Project」の中にある、「ThisWorkBook」に下記コードを記述します。
Private Sub Workbook_Open()
Worksheets(“HOME”).Activate
Range(“A1”).Select
ActiveSheet.Protect
UserForm1.Show
End Sub
- エクセルファイルが開いたら
- シート名「HOME」を前面にして作業するシートとする
- セルA1を選択する
- 開いたシートを保護する
- ユーザーフォーム1を表示する
- マクロ記録終了
5行目にActiveSheet.Protectを付け足すだけで完成で、あとは各コマンドボタンをクリックすると最初に保護解除するVBAコードを加えるだけで、マクロエラーから解放されます。
ちなみに、上記VBAコードはパスワード設定や部分許可の設定をしないシンプルな方法です。
ThisWorkBookの場所についてはこちらに記載していますのでご参考下さいませ。
各コマンドボタンの設定
先ほどブックでシートの保護を自動的に設定したので、各コマンドボタンにはすでに書いてあるプログラムの開始前にシートの解除設定をして、プログラムが終了するEnd Subの直前にシートの保護を設定するだけです。
Private Sub CommandButton1_Click()
ActiveSheet.Unprotect
Unload UserForm1
UserForm2.Show
ActiveSheet.Protect
End Sub
- コマンドボタン1がクリックされたら
- 表示中のシートの保護を解除する
- ユーザーフォーム1を閉じる
- ユーザーフォーム2を開く
- 表示中のシートの保護を設定する
このようにするだけで、シートの保護を設定してもプログラム開始直前に解除・実行・保護となるのでコードを書き直したりする必要が無いので必ず使っていますよ。
関連記事
-
ファイルの操作
VBAで1クリックで上書き保存してエクセルファイルを閉じる方法
Excelを使っていて作業が終わったら、上書き保存ボタンを押してファイルを閉じるのが面倒だと思ったことありませんか? たった1クリック1秒でできたら作業効率がアップ… -
ファイルの操作
エクセルシートの保護したらマクロエラーになった時のVBA対処法
エクセルで様々な計算式などが入っている表を作った時に、誤って計算式などを消されないようにシートの保護設定をしたら、マクロエラーになったことありませんか? 原因… -
データの操作
エクセル関数とVBAを組み合わせて商品期限切れ通知を表示する方法
小さな会社や個人では、アプリや専用ソフトを使って商品管理とかはコストが見合わず、エクセルで商品管理していませんか? このエクセルによる商品管理でリストの中にあ…
紅葉スポット
-
国営ひたち海浜公園みはらしの丘へあたり一面真っ赤なコキアの絶景へ
茨城県で10月中旬頃にピークを迎える人気ダントツ1位の観光スポット「ひたち海浜公園・みはらしの丘」の、真っ赤に染まった約32,000本コキアを見に世界中から訪日外国人… -
温泉の匂いが漂い白濁した湖!日光湯ノ湖・兎島の絶景ポイントへ
日光東照宮から始まっていろは坂・明智平・中禅寺湖・竜頭の滝・戦場ヶ原と奥日光を進んで行った最終に奥日光湯元温泉があり、東武鉄道のフリーパス「まるごと日光・東… -
塩原温泉・紅の吊橋の紅葉絶景へ那須塩原駅や黒磯駅からバスで行く
【紅葉見頃】10月下旬~11月中旬 塩原温泉郷と言えば、箒川(ほうきがわ)沿いに温泉旅館が点在している首都圏からも近い温泉街ですが、紅葉の時期になるとカエデやも… -
龍王峡駅から徒歩で紅葉や虹見の滝へ鬼怒川温泉駅からバスなら10分
【紅葉見頃】10月下旬~11月中旬 鬼怒川温泉と川治温泉の間に位置して、鬼怒川沿いに龍王峡自然研究路をいう遊歩道が整備されているので、火山の噴火によってできた岩… -
三国峠猿ヶ京温泉の赤谷湖畔水鏡紅葉と江戸時代の関所跡見学へ
国道17号で三国峠を目指す途中にある温泉街の猿ヶ京には、関所と相俣ダムによってできた赤谷湖が観光スポットになっています。 そして紅葉になると周囲の三国連山が綺麗… -
花園渓谷の花園神社紅葉ライトアップへ磯原駅から観光周遊バスで行く
茨城県の最北端にある北茨城市でもう少し北上すれば福島県という位置なので、東京からだとかなり遠いですが、山間部の花園花貫県立自然公園という名の通り大自然の中を…