Excel VBA ワークシートの保護

スポンサーリンク
スポンサーリンク

ワークシートを保護する方法

ワークシートに作成されているデータなどが
誤って消去されたり、変更されたりしないように
するには、ワークシートを保護する必要があります。

Excelにはワークシート内のセルが変更されないように
するためのシートの保護機能があります。

他にも、シートを非表示にして隠すことや
スクロールできる範囲を制限して他の部分の操作を
できないように設定することができます。

これらの設定方法について説明をします。

ワークシートを保護するためのプロパティ・メソッド一覧

  • Protect【プロテクト】メソッド
    ワークシートを保護します。
  • Unprotect【アンプロテクト】メソッド
    ワークシートの保護を解除します。
  • Visible【ビジブル】プロパティ
    ワークシートの表示と非表示を切り替えます
  • SclollArea【スクロールエリア】プロパティ
    スクロール可能なセル範囲を設定します。

以上のプロパティやメソッドについての詳細説明をします。

Protect【プロテクト】メソッド

ワークシートを編集ができないように保護するには
Protect【プロテクト】メソッドを使用します。

Protect【プロテクト】メソッドの書式

[]内は省略可能です。
オブジェクト.Protect([Password, DrawingObjects, Contents,
Scenarios, UserInterfaceOnly, AllowFormattingCells,
AllowFormattingColumns, AllowFormattingRows,
AllowInsertingColumns, AllowInsertingRows,
AllowInsertingHyperlinks, AllowDeletingColoumns,
AllowDeletingRows, AllowSorting, AllowFiltering,
AllowUsingPivotTables])


設定値(引数)の説明

  • オブジェクト(必須)
    Worksheetオブジェクトを指定します。
  • Password【パスワード】(省略可)
    パスワードを文字列で指定します。
    パスワードは255文字以内で設定し、大文字小文字は区別されます。
    省略した場合は、パスワードなしで保護を解除でき、設定した場合は
    保護を解除するためにパスワードが必要になります。
  • DrawingObjects【ドローイングオブジェクツ】(省略可)
    Falseに設定した場合は、描画オブジェクトを保護しません。
    省略された場合はTrueが設定され、描画オブジェクトを保護します。
  • Contents【コンテンツ】(省略可)
    Falseに設定した場合はワークシートではロックされているセルの保護を解除し
    グラフシートではグラフ全体の保護を解除します。

    省略された場合はTrueが設定され、保護されます。
  • Scenarios【シナリオズ】(省略可)
    Falseに設定した場合は、シナリオを保護しません。
    省略された場合はTrueが設定され、シナリオは保護されます。
  • UserInterfaceOnly【ユーザーインターフェイスオンリー】(省略可)
    Trueに設定した場合は、画面上からの変更は保護されますが
    マクロからの変更は保護されません。

    省略された場合はFalseが設定され、画面、マクロ両方、保護されます。
  • AllowFormattingCells【アローフォーマッティングセルズ】(省略)
    Trueに設定した場合は、セルの書式が変更できます。
    省略した場合は、Falseが設定され、セルの書式の変更はできません。
  • AllowFormattingColumns【アローフォーマッテイングカラムス】(省略可)
    Trueに設定した場合は、列の書式が変更できます。
    省略した場合は、Falseが設定され、列の書式の変更はできません。
  • AllowFormattingRows【アローフォーマッテイングロウズ】(省略可)
    Trueに設定した場合は、行の書式が変更できます。
    省略した場合は、Falseが設定され、行の書式の変更はできません。
  • AllowInsertingColumns【アローインサーティングカラムス】(省略可)
    Trueに設定した場合は、列の挿入ができます。
    省略した場合は、Falseが設定され、列の挿入はできません。
  • AllowInsertingRows【アローインサーティングロウズ】(省略可)
    Trueに設定した場合は、行の挿入ができます。
    省略した場合は、Falseが設定され、行の挿入はできません。
  • AllowInsertingHyperlinks【アローインサーティングハイパーリンクス】(省略可)
    Trueに設定した場合は、ハイパーリンクの挿入ができます。
    省略した場合は、Falseが設定され、ハイパーリンクの挿入はできません。
  • AllowDeletingColoumns【アローデリーティングカラムス】(省略可)
    Trueに設定した場合は、列の削除ができます。
    省略した場合は、Falseが設定され、列の削除はできません。
  • AllowDeletingRows【アローデリーティングロウズ】(省略可)
    Trueに設定した場合は、行の削除ができます。
    省略した場合は、Falseが設定され、行の削除はできません。
  • AllowSorting【アローソーティング】(省略可)
    Trueに設定した場合は、並べ替えを実行できます。
    省略した場合は、Falseが設定され、並べ替えを実行できません。
  • AllowFiltering【アローフィルタリング】(省略可)
    Trueに設定した場合は、フィルターを設定できます。
    フィルター条件の変更はできますが
    オートフィルターの有効/無効は切り替えはできません。
    省略した場合は、Falseが設定され、フィルター設定はできません。
  • AllowUsingPivotTables【アローユズイングピボットテーブルズ】(省略可)
    Trueに設定した場合は、ピボットテーブルを使用できます。
    省略した場合は、Falseが設定され、ピボットテーブルは使用できません。

パスワードを設定して保護し、セルの選択もできないようにするコート例

Sub 保護()
With ActiveSheet
.Protect Password:="1234"
.EnableSelection = xlNoSelection
End With
End Sub

セルの選択をできなくする方法

ワークシートの保護をした場合、編集できないセル
であってもセルの選択はできます。
ワークシートの保護時に、Worksheetオブジェクトの
EnableSelection【イネーブルセレクション】プロパティを
以下の定数で指定します。

定数内容
xlUnlockedCells
【アンロックドセルズ】
ロックを解除しているセル以外のセルを
選択できなくすることができます。
xlNoselection
【ノーセレクション】
すべてのセルが選択できなくなります。
xlNoRestrictions
【ノーリストリクションズ】
すべてのセルが選択可能になります。

例えば、すべてのセルを選択できなくするには
ワークシートを保護するコードの後に
Activesheet.EnableSelection = xlNoselection
と記述します。

シートの保護時に入力できるセルを設定する方法

シートの保護前にセルのロックを解除しておくと
ワークシートを保護しても、そのセルへの入力や
編集は可能になります。
RangeオブジェクトのLocked【ロックツ】プロパティを
Falseに設定します。例として
A1セル~A5セルの保護を解除する場合は
Range(“A1:A5”).Locked = False
と記述します。
ワークシートが保護されてる状態ではエラーになるので
ワークシートの保護をする前に設定します。

ワークシートが保護されているか確認する方法

Worksheetオブジェクトの
ProtectContents【プロテクトコンテンツ】プロパティを使用します。
戻り値が、Trueの場合は保護されており、Falseの場合は
保護されていません。If文(条件分岐)を利用して以下の
ようにワークシートの保護状態を確認できます。

Sub 保護確認()
If ActiveSheet.ProtectContents Then
MsgBox "シートは保護されています。"
Else
MsgBox "シートは保護されていません。"
End If
End Sub 

Unprotect【アンプロテクト】メソッド

指定したワークシートの保護を解除するには
Unprotect【アンプロテクト】メソッドを使用します。

Unprotect【アンプロテクト】メソッドの書式

[]内は省略可能です。
オブジェクト.Unprotect([Password])


設定項目(引数)の説明

  • オブジェクト(必須)
    Worksheetオブジェクトを指定します。
  • Password【パスワード】(省略可)
    ワークシートを保護するときにパスワードを指定した場合は
    そのパスワードを指定します。

    保護時にパスワードを設定しなかった場合やパスワード入力用の
    ダイアログボックスを表示させる場合は省略します。
    ダイヤログボックスにパスワードを入力してもらう場合
    パスワードが間違っているとエラーになるので
    エラー処理のコードを記述します。

パスワード付の保護を解除するコード例

Sub 保護解除()
On Error GoTo エラー処理
ActiveSheet.Unprotect
Exit Sub
エラー処理:
MsgBox "パスワードが違います。"
End Sub

Visible【ビジブル】プロパティ

ワークシートの表示と非表示を切り替えるには
Visible【ビジブル】プロパティを使用します。
値の取得と設定ができます。

Visible【ビジブル】プロパティの書式

【取得】
オブジェクト.Visible
【設定】
オブジェクト.Visible = 設定値


設定値の説明

  • オブジェクト(必須)
    Worksheetオブジェクトを指定します。
  • 設定値(必須)
    ブール型で指定するかXlSheetVisibility列挙型の定数で指定します。
    ブール型で指定する場合は
    Trueの場合はワークシートを表示
    Falseの場合はワークシートを非表示にします。
    XlSheetVisibility列挙型で指定する場合は以下の定数で指定します。
定数内容
xlSheetHidden【シートヒドゥン】シートを非表示にするが手動で再表示できる
xlsheetVeryHidden【ベリーヒドゥン】シートを非表示にし手動で再表示できない
xlsheetVisible【シートビジブル】シートを表示する

※設定値をFalseまたはxlSheetHidden【シートヒドゥン】にすると
ワークシートは非表示になりますが、Excelのメニューから再表示できます。

xlsheetVeryHidden【ベリーヒドゥン】を設定すると
非表示にするとともにExcelのメニューから再表示ができなくなります。
再表示する場合はVBAでVisibleプロパティの設定値を
Trueもしくは、xlsheetVisible【シートビジブル】に設定します。


ScrollArea【スクロールエリア】プロパティ

スクロールが可能なセル範囲を設定するには
ScrollArea【スクロールエリア】プロパティを使用します。
このプロパティでセル範囲を指定すると
領域以外への画面のスクロールができなくなり
その領域以外のセルを選択することができなくなります。

ScrollArea【スクロールエリア】プロパティの書式

【取得】
オブジェクト.ScrollArea
【設定】
オブジェクト.ScrollArea = 設定値


設定値の説明

  • オブジェクト(必須)
    Worksheetオブジェクトを指定します。
  • 設定値(必須)
    スクロールを可能とする範囲をA1形式の文字列で指定します。
    “A1:C5″のように指定します。空文字””を指定した場合は
    設定が解除されすべてのセルの選択とスクロールが可能になります。

A1セルからD5セルの表範囲以外にスクロールを制限するコード例

Sub 範囲制限()
ActiveSheet.ScrollArea = "A1:D5"
End Sub

※指定したA1~D5セルの範囲以外のセルの選択もできなくなります。

スクロール領域の制限を解除するコード例

Sub 制限解除()
ActiveSheet.ScrollArea = ""
End Sub

※制限を解除するには設定値を空文字にします。

Rangeオブジェクトでスクロール可能領域を設定する方法

Addressプロパティを使用して設定します。
例えばA1セルから始まる表範囲を設定する場合は
Activesheet.ScrollArea = Range(“A1”).CurrentRegion.Address
と記述します。


以上で
ワークシートの保護についての解説を終了します。
ありがとうございました。

スポンサーリンク
スポンサーリンク

フォローする

スポンサーリンク
スポンサーリンク