プロが教えるわが家の防犯対策術!

Excel2010で、とあるテンプレートを作っています。
複数人が使用するので、数式が入ったセルを編集できないようにしたいです。
その他に以下の仕様があります。全てを満足する方法はありますか?

<仕様>
①数式が入ったセルを編集されない
②数式が入ったセルを含む、行や列の削除は可能 ←「セルの保護」だとNG
③数式が入ったセルを空白セルにされない ←「データの入力規則」だとNG
<仕様の理由>
①数式の保護、誤入力防止
②多めに数式が入ったセルを作るので、余ったら行ごと削除したい
③deleteボタンで数式を消されないように

条件が色々とありますが、何か良い方法はありますか?
VBAならできるんでしょうか?(当方、VBAに関してはほぼ無知です。。。)

A 回答 (4件)

保護したシートに対し、VBAを使えば可能です。


シート上にボタンを設置し、削除するときは削除する行なり列なりを選択し、そのボタンを押す。
ボタンに実装するのは、アンプロテクト→指定範囲削除→プロテクトとなるコードのみ。
なのでデフォルトでは基本保護状態、削除するときだけVBAにより一瞬保護解除、削除後すぐさま保護、の流れです。

例↓
Sub kesichaubutton()
ActiveSheet.Unprotect
Selection.Delete
ActiveSheet.Protect
End Sub

超絶単純、シンプル。もうほんとこれだけで充分です(ただし、必ず、計算式が入ってない編集してもいいセルはロックがかからないようちゃんと設定するのを忘れずに)。

①上記コードを開発タブ内のVisualBasic→挿入→標準モジュールの順で標準モジュール内に突っ込み、
②ボタンを設置(開発タブ内→挿入にボタンがあるので、それをシート上の適当に邪魔にならない設置したい場所に図を挿入するのと同じ要領で設置)、するとマクロコード選べとポップアップが出てくるので、マクロ名kesichaubuttonを選択したらこのボタンは削除コード呼び出し用ボタンへと早変わりです。

とりあえず質問文から読み取れる分の条件(計算式入セルをとにかくどんな形であれ編集させず、ただし行列削除は例外的に処理)に適った動きはこれで達成できると思いますが、何か違う場合はコレをヒントにVBAに挑戦してみるとよいですよ。
VBAは難しくありません。ほぼ英語です。やりたいことだけも調べていけばどんどん扱えるようになってきますし、汎用性あるので割と色んな事が可能になります。楽しいですよ。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
VBAの構文も教えていただきありがとうございます。
試してみたところ上手くできました。

マクロを勉強し始めたところでしたので興味深かったです。
VBAを学んでいけば出来ることが増えて楽しそうですね。

お礼日時:2024/02/28 13:15

追記※No.3の者です


使えてよかったです。
ボタン配置でコード呼び出しを例にしましたが、ショートカットキー(ctrl+alt+D等)で呼び出せるようにもできますので、使いやすさに応じて変えてみてくださいね。この情報化社会ではVBAの学習にコストなんてまずかからないので、ガンガン挑戦していってください。
    • good
    • 0

こんにちは



一番ご希望に近いのは、「数式の入ったセルをロックして、シートの保護をかける」方法だと思いますけれど・・
ご指摘のように、保護されたセルを含む行は削除できません。
ただし、行の書式変更を許可しておくことで、保護されたセルを含む行を非表示にすることは可能です。
(削除はできませんけれど、見た目はほぼ同じになります)
通常機能の範囲内で、ご希望に近いことを実現するなら、このくらいのような気がします。


>VBAならできるんでしょうか?
どのような使い勝手のものなのか不明なので、どのような方法が適切なのかはわかりませんけれど、代替する方法は考えられると思います。

例えば、上記の状態でVBAから行の削除を行うことは可能ですが、その指示をどのようにして行うのかを考える必要があります。
あるいは、全く別の発想で、同じ様な計算を行っているのであれば、数式を設定するのをやめてしまって、関連するセルに値が入力されたら、VBAで計算を行うか、または、数式を設定するといった方法も考えられます。
数式のあるセルを消されたら、VBAで再度数式を設定することも可能です。
(こちらであれば、指示の方法を考える必要もありません)

>当方、VBAに関してはほぼ無知です。。。
VBAで行う場合はそれなりの知識が必要になりますので、ほぼ無知の状態からでは学習コストがそれなりにかかるものと想像します。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

やはりシートの保護が最適ですかね。
削除するのも見た目だけの問題ですので、非表示 or 保護解除して列削除 すれば済みますし。

測定記録のテンプレートを作ってます。
『特定のセルに数値を入力すると、その値を参照して数式セルで計算結果を出す』みたいなものです。

お礼日時:2024/02/27 17:36

セルのロックについては下記にあります。


https://forest.watch.impress.co.jp/docs/serial/o …
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

対象セルを含む行を削除したいので、教えていただいた方法だとうまくいきませんでした。
やはりこの方法しかないのでしょうか?

お礼日時:2024/02/27 16:43

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A