【VBA】マクロの記録でシートの保護のプログラムを生成する

Excel VBA シートの保護

エクセルVBAのマクロの記録を使って「シートの保護」のプログラムを生成する方法を紹介します。

「マクロの記録」を使うとワークシートのオブジェクトの範囲内の操作であれば自動的にコードを生成できるので、プログラム作成がとても楽に行えます。

先ずはエクセルのシート1を表示し「A1」のセルを選択した状態からマクロの記録を開始します。

次にExcelのリボンにある「開発」タブの 「コード」グループ で、「マクロの記録」 をクリックするとマクロの記録ダイアログボックスが表示されるので「OK」をクリックして記録を開始します。

シート左上の「全セル選択ボタン」を押して、すべてのセルを選択します。

シート上で右クリックしてショートカットメニューの中から「セルの書式設定」を選択し、セルの書式設定ダイアログボックスを表示します。

「保護」タブを選択してロックの「□」チェックを一度外し、再び「☑」チェックを入れて「OK」ボタン押します。

今回はA列だけ入力できるように設定したいのでA列の列番号をクリックしてA列全体を選択します。

右クリックしてショートカットメニューの中から「セルの書式設定」を選択し、セルの書式設定ダイアログボックスを表示します。

「保護」タブを選択してロックの「□」チェックを外し「OK」ボタン押します。

Excelのリボンにある「校閲」タブから「シートの保護」を選択し「シートの保護」のダイアログボックスを表示します。

ロックされたセル範囲の選択の「□」チェックを外して「OK」ボタンを押します。

ワークシートの「A1」のセルを選択して「開発」 タブの 「コード」グループ で「記録終了」をクリックします。

Alt キーと F11 キーを同時に押してVBE (Visual Basic Editor)を開き、標準モジュールの下のModule1をダブルクリックすると次のようなコードが生成されていると思います。

コードの内容が分かりやすいようにコメントを付け加えてみました。( ^o^♪

Sub Macro1()
'
' Macro1 Macro
'

'
Cells.Select 'ワークシート全体のセルを選択する。
Selection.Locked = True '選択したセルをロックします。
Selection.FormulaHidden = False '選択されているセル範囲の数式を表示します。
Columns("A:A").Select '編集可能にしたいセルを選択します。
Selection.Locked = False '現在選択されているセル範囲のロックを解除して編集できるようにします。
Selection.FormulaHidden = False '選択されているセル範囲の数式を表示します。
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True 'Excelシート全体を保護します。
ActiveSheet.EnableSelection = xlUnlockedCells 'ロックされたセル範囲の選択をできないようにする。
Range("A1").Select

End Sub
シート保護の解除

プログラム実行前の準備

プログラム(Macro1)を動かす前には、少し準備が必要です。

今いるシートが保護されているとプログラムがうまく動けないことがあります。そのためプログラムを実行する前に、シートの保護を外しておきましょう。

1. 手動で保護を解除する方法

普段使っているExcelの機能で保護を解除するには、Excelのリボンにある「校閲」タブをクリックします。その中の「シート保護の解除」ボタンを押してください。

2. プログラムで保護を解除する方法

もし、プログラムを使って自動で保護を解除したい場合は、以下の手順で設定と実行ができます。次の「シート保護の解除」のコードをコピーしてVBAの「標準モジュール」のModule1に貼り付けます。そして「開発タブ」 →「マクロの表示」ボタン → 表示された一覧からマクロ名(シート保護の解除)を選択 → 「実行」ボタンを押せば、プログラムがシートの保護を解除してくれます。

これで、安心してプログラムを実行できます。

Sub シート保護の解除()

ActiveSheet.Unprotect

End Sub
シートの保護のプログラム (Macro1) の実行

「開発タブ」 →「マクロの表示」ボタン → 表示された一覧からマクロ名(Macro1)を選択 → 「実行」ボタンを押してプログラムを実行します。

セル範囲指定のポイント

「Macro1」のコードの中にある「Columns(“A:A”).Select」の部分を直せば入力したい場所(セル範囲)を自由に変えられます。

離れたセルを指定したい場合「Range(“A3,D4,E5”).Select」のように、セルの名前をカンマ(,)で区切って書きましょう。

離れたセル範囲を指定したいときは、「Range(“A3:A7,B8:B17”).Select」のように、それぞれの範囲をカンマ(,)で区切って指定すると、色々な設定に対応できます。

この方法を使えば、必要に応じて入力できる場所を細かく設定できますので、ぜひ試してみてくださいね!

「シートの保護」の設定は、「セルの書式設定」と「シートの保護」の2つの設定が関連しているため操作が複雑でわかりにくいことがあります。

今回は、この設定を簡単に行うために、マクロの記録機能を使って必要なプログラムコードを自動生成する手順を紹介しました。

この方法なら、複雑な設定を理解していなくても、プログラミングの知識なしに目的の保護設定を確実に実装できます。( ^ᴗ^♪

コメント