ラベル 型・定数 の投稿を表示しています。 すべての投稿を表示
ラベル 型・定数 の投稿を表示しています。 すべての投稿を表示

VBA シートの保護(保護の解除)



シートの保護


VBAを使ってエクセルシートの保護をする方法とその解除方法です。
エクセル上だと[リボン]→[校閲]→[シートの保護]→・・・と同じ動作を再現します。


メソッドなど
Worksheet.Protect


サンプルコード(パスワード設定なし)
Sub hogo()
    'アクティブシートの保護
    ActiveSheet.Protect    
End Sub


実行結果イメージ


解説
例としてActiveSheetに対してシートの保護をする処理をしています。

WoekrSheet.Protectはワークシートを保護するメソッドです。
[校閲]から[シートの保護]を選択すると出てくるオプション設定する「パスワード」や「セルの選択の許可」などのパラメータはProtectの後に記述することで指定できます。



パラメータ一覧
名前 内容 既定値
Contents シートとロックされたセルの内容の保護 True/False True
Password パスワード 文字列
AllowFormattingCells セルの書式設定 True/False False
AllowFormattingColumns 列の書式設定 True/False False
AllowFormattingRows 行の書式設定 True/False False
AllowInsertingColumns 列の挿入 True/False False
AllowInsertingRows 行の挿入 True/False False
AllowInsertingHyperlinks ハイパーリンクの挿入 True/False False
AllowDeletingColumns 列の削除 True/False False
AllowDeletingRows 行の削除 True/False False
AllowSorting 並び替え True/False False
AllowFiltering オートフィルタの使用 True/False False
AllowUsingPivotTables ピボットテーブル レポートを使用する True/False False
DrawingObjects オブジェクトの編集 True/False True
Scenarios シナリオの編集 True/False True
UserInterfaceOnly 画面上からの変更保護 True/False False

Contentsの動きがいまいちよくわかりませんがFalseにするとロックしたセルも編集できました。(オブジェクトとグラフは編集不可のままっぽい)

サンプルコード(パスワード設定など)
Sub hogo()
    'アクティブシートの保護(パスワード指定、並び替え許可)
    ActiveSheet.Protect Password:="123", AllowSorting:=True
End Sub



シートの保護の解除

メソッドなど
Worksheet.Protect


サンプルコード(パスワード設定なし)
Sub hogokaijo()
    'アクティブシートの保護解除
    ActiveSheet.Unprotect
End Sub

パスワード設定がある場合は引数Passwordに指定します。
    ActiveSheet.Unprotect Password:="123"

関連・類似ページ
ブックの共有化
ブックの保存
警告や確認メッセージを非表示にする

UserForm イベント一覧



ユーザーに任意で値を入れてもらったり、選択してもらったり処理を実行するタイミングを決めてもらったりすることができます。
フォームを追加するには…
1)画面の上の【挿入】→【ユーザーフォーム】
2)左側のプロジェクトから右クリック【挿入】→【ユーザーフォーム】
3)ショートカットで[Alt] + [I] + [U] 
のいずれかで追加出来ます。


プロパティ一覧 はこちらです。


名前 説明
Initialize フォームが表示される前(初期化された時)
QueryClose フォームが閉じる前
Activate フォームがアクティブになった時
Terminate フォームが閉じられた時
Click フォームがクリックされた時
DblClick フォームがダブルクリックされた時
イベント一覧


サンプル1) 右上の×ボタン禁止
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) If CloseMode = 0 Then Cancel = True End Sub
引数CloseMode = 0 は右上の×をクリックして閉じようとした動作を意味します。
引数Cancel はフォームを閉じないか どうかで True でキャンセル(=閉じない)します。