
『Microsoft Excel』(以下Excel、エクセル)の中の機能としてある[VBA] について基本的な説明をしていきます。
仕事の改善や個人的な知識向上に役立ててください(^o^)
第10回目の今回は
・ワークシートの保護・解除
について解説していきますので、よろしくお願いします。
前回までのVBAに関するINDEXは下記を参照してくださいね。
↓サブログ内部リンク(VBA用INDEX)↓
-
-
目次
Excel VBA講座-目次(INDEX)
サブローExcel VBAに関する説明を今後増やして行く予定なので、各リンクに飛ぶような目次(INDEX)を作りました。 随時更新していくので、よろしくお願いします。 スラスラ読めるExcel VBA ...
続きを見る
シートの保護
ワークシート内に入力されている部分を、誰かに誤って変更されたり、消されたりされないようにシートを保護することができます。
またVBAである処理をしていき、最終的にシートの保護をして保存するという流れが可能です。
<書式>
Worksheet.Protectメソッド
’ワークシートを保護し、変更できないようにします。
式.Protect(Password, DrawingObjects, Contents, Scenarios, UserInterfaceOnly, AllowFormattingCells, AllowFormattingColumns, AllowFormattingRows, AllowInsertingColumns, AllowInsertingRows, AllowInsertingHyperlinks, AllowDeletingColumns, AllowDeletingRows, AllowSorting, AllowFiltering, AllowUsingPivotTables)
全ての引数は省略可能です。ただ編集の制約が大きくなるので、編集可能にしておきたいものがあれば下記を参考に引数を入れてみましょう!
Password | パスワードを文字列で指定します。大文字と小文字が区別されます。 この引数を省略すると、ワークシートまたはブックはパスワードの使用なしで保護解除が可能です。 この引数を指定すると、保護解除をするためには、そのパスワードが必要になります。 |
DrawingObjects | 描画オブジェクトを保護するには、True を指定します。 |
Contents | オブジェクトの内容を保護するには、True を指定します。 この引数による保護対象は、グラフの場合はグラフ全体、ワークシートの場合はロックされているセルです。 |
Scenarios | シナリオを保護するには、True を指定します。この引数はワークシートの場合のみ有効です。※シナリオとは、名前が付けられて保存されている入力値のグループです。 |
UserInterfaceOnly | True を指定すると、画面上からの変更は保護されますが、マクロからの変更は保護されません。この引数を省略すると、マクロからも画面上からも変更することができなくなります。保護を維持したままマクロを動かす際に有効です。 |
AllowFormattingCells | True を指定すると、ユーザーは保護されたワークシートのセルを書式変更が可能です。 |
AllowFormattingColumns | True を指定すると、ユーザーは保護されたワークシートの列の書式変更とが可能です。 |
AllowFormattingRows | True を指定すると、ユーザーは保護されたワークシートの行の書式変更が可能です。 |
AllowInsertingColumns | True を指定すると、ユーザーは保護されたワークシートに列を挿入することが可能です。 |
AllowInsertingRows | True を指定すると、ユーザーは保護されたワークシートに行を挿入することが可能です。 |
AllowInsertingHyperlinks | True を指定すると、ユーザーは保護されたワークシートにハイパーリンクを挿入することが可能です。 |
AllowDeletingColumns | True を指定すると、ユーザーは保護されたワークシートの列を削除することができ、削除される列のセルはすべてロック解除されます。 |
AllowDeletingRows | True を指定すると、ユーザーは保護されたワークシートの行を削除することができ、削除される行のセルはすべてロック解除されます。 |
AllowSorting | True を指定すると、ユーザーは保護されたワークシートで並べ替えを行うことが可能です。 並べ替え範囲内のセルは、ロックと保護が解除されている必要があります。 |
AllowFiltering | True を指定すると、ユーザーは保護されたワークシートにフィルターを設定することが可能です。 ユーザーは、フィルター条件を変更できますが、オートフィルターの有効と無効を切り替えることはできません。 |
AllowUsingPivotTables | True を指定すると、ユーザーは保護されたワークシートでピボットテーブル レポートを使用することが可能です。 |
<コード記入例1>
Sub シート保護()
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End Sub
<コード記入例2>
Sub シート保護パスワード有()
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, Password:="lock"
End Sub
シートの保護解除
シートの保護(ロック)の解除をおこなう場合、『Unprotect』メソッドを使用します。またパスワードが設定されている場合、引数「Password」にパスワードの文字列を指定します。
VBAで一旦シート保護を解除し、中身を変更・修正し、再度保護をかけるような流れを作ることも可能です。
<書式>
Worksheet.Unprotect メソッド
’ワークシートの保護を解除します。
式.Unprotect Password
Password | シートの保護を解除するためのパスワードを指定します。なお、パスワードでは大文字と小文字は区別されます。 シートの保護にパスワードが指定されていないときは、この引数は無視されます。 |
<コード記入例3>
Sub シート保護解除()
ActiveSheet.Unprotect
End Sub
<コード記入例4>
Sub シート保護解除パスワード有()
ActiveSheet.Unprotect Password:="lock"
End Sub

下のVBA講座も是非ご覧下さい!!
関連
前回のVBA講座(第9回)
繰り返し処理(Do~Loop)を使いこなそう!【VBA入門講座#9】
関連
次回のVBA講座(第11回)