この記事には広告を含む場合があります。
記事内で紹介する商品を購入することで、当サイトに売り上げの一部が還元されることがあります。
こんにちは。かわべです。
この記事ではExcelのセルの保護(ロック処理)とシート保護のマクロについて記載します。
(使用Excel;2013)
参考
microsoft;Worksheet.Protect メソッド (Excel)
目次 表示
ロック処理とシートの保護
Excelでセルに入力した値を保護するためのロック処理を有効にするためには「シート保護」の処理をしなければなりません。
次の画像のとおり「セルの書式設定」を見るとシートの保護が必要であることが記載されています。(下の画像の赤色の枠囲み部分)
vbaで記述する場合も仕組みは同じ(セルのロック処理とシート保護の両方の記述が必要)となります。
ロック処理の記述
vbaでロック処理の記述は次のとおりです。
[aside type=”boader”](セル).Locked = True[/aside]
Trueはロック処理を有効にし、Falseと記述した場合はロック処理を無効にします。
しかし、上記のとおり、Trueで有効にしてもシート保護をしなければ有効にはなりません。
シート保護の記述
vbaでシート保護の記述は次のとおりです。
[aside type=”boader”](ワークシート).Protect[/aside]
シート保護の解除は次のとおりです。
[aside type=”boader”](ワークシート).Unprotect[/aside]
※ 引数について省略
下記のページを参照してください。
microsoft;Worksheet.Protect メソッド (Excel)
使用例
次のような表を用意しました。
売上高を入力すると売上高累計に月次の累計金額が表示されるようになっていますが、入力されている売上高の数値をロックするマクロを作成してみました。
lonYyにC列の数値が入力されている最大行を代入し、C列の2列目から最大行までをロック処理する記述をしました。(上の画像の緑色の枠囲み部分)
シートを保護する記述もしました。(上の画像の赤色の枠囲み部分)
※ セルの基本設定はロック処理がTrueの状態のようです。よって、上記の記述をしなくてもシート保護の記述をすれば、セルの値を保護することができますが、この記事ではあえて記述しました。
※ ロック処理していあるセルを見分けるため、ロック処理をした後、背景色を灰色(15)に変更しました。(上の画像の水色の枠囲み部分)
関連記事 最大値のセルの背景色を変更するマクロ
マクロを実行すると次のとおり、C列の売上高が入力されているセルが灰色になります。
この状態でC2セルの値を変更しようとすると、次のメッセージが表示されます。セルが保護されていることがわかります。
シートの保護解除
シートの保護は、リボンのなかのアイコンでも解除することができますが、vbaでシートの保護を解除する記述もしてみました。
上の画像の赤い枠囲み部分のとおり、「(ワークシート).Unprotect」と記述すれば、シートの保護が解除されます。
※ 背景色をなし(0)に変更するように記述しています。(上の画像の水色の枠囲み部分)
■□◆◇ 編集後記 ◇◆□■
今日は、関東はすずしいですね。
知り合いの税理士さんが節税Tシャツなるものを作成しました。(Tシャツのデザインはリンク先でご確認ください。)