
Excel2010で、とあるテンプレートを作っています。
複数人が使用するので、数式が入ったセルを編集できないようにしたいです。
その他に以下の仕様があります。全てを満足する方法はありますか?
<仕様>
①数式が入ったセルを編集されない
②数式が入ったセルを含む、行や列の削除は可能 ←「セルの保護」だとNG
③数式が入ったセルを空白セルにされない ←「データの入力規則」だとNG
<仕様の理由>
①数式の保護、誤入力防止
②多めに数式が入ったセルを作るので、余ったら行ごと削除したい
③deleteボタンで数式を消されないように
条件が色々とありますが、何か良い方法はありますか?
VBAならできるんでしょうか?(当方、VBAに関してはほぼ無知です。。。)
No.3ベストアンサー
- 回答日時:
保護したシートに対し、VBAを使えば可能です。
シート上にボタンを設置し、削除するときは削除する行なり列なりを選択し、そのボタンを押す。
ボタンに実装するのは、アンプロテクト→指定範囲削除→プロテクトとなるコードのみ。
なのでデフォルトでは基本保護状態、削除するときだけVBAにより一瞬保護解除、削除後すぐさま保護、の流れです。
例↓
Sub kesichaubutton()
ActiveSheet.Unprotect
Selection.Delete
ActiveSheet.Protect
End Sub
超絶単純、シンプル。もうほんとこれだけで充分です(ただし、必ず、計算式が入ってない編集してもいいセルはロックがかからないようちゃんと設定するのを忘れずに)。
①上記コードを開発タブ内のVisualBasic→挿入→標準モジュールの順で標準モジュール内に突っ込み、
②ボタンを設置(開発タブ内→挿入にボタンがあるので、それをシート上の適当に邪魔にならない設置したい場所に図を挿入するのと同じ要領で設置)、するとマクロコード選べとポップアップが出てくるので、マクロ名kesichaubuttonを選択したらこのボタンは削除コード呼び出し用ボタンへと早変わりです。
とりあえず質問文から読み取れる分の条件(計算式入セルをとにかくどんな形であれ編集させず、ただし行列削除は例外的に処理)に適った動きはこれで達成できると思いますが、何か違う場合はコレをヒントにVBAに挑戦してみるとよいですよ。
VBAは難しくありません。ほぼ英語です。やりたいことだけも調べていけばどんどん扱えるようになってきますし、汎用性あるので割と色んな事が可能になります。楽しいですよ。
回答ありがとうございます。
VBAの構文も教えていただきありがとうございます。
試してみたところ上手くできました。
マクロを勉強し始めたところでしたので興味深かったです。
VBAを学んでいけば出来ることが増えて楽しそうですね。
No.4
- 回答日時:
追記※No.3の者です
使えてよかったです。
ボタン配置でコード呼び出しを例にしましたが、ショートカットキー(ctrl+alt+D等)で呼び出せるようにもできますので、使いやすさに応じて変えてみてくださいね。この情報化社会ではVBAの学習にコストなんてまずかからないので、ガンガン挑戦していってください。
No.2
- 回答日時:
こんにちは
一番ご希望に近いのは、「数式の入ったセルをロックして、シートの保護をかける」方法だと思いますけれど・・
ご指摘のように、保護されたセルを含む行は削除できません。
ただし、行の書式変更を許可しておくことで、保護されたセルを含む行を非表示にすることは可能です。
(削除はできませんけれど、見た目はほぼ同じになります)
通常機能の範囲内で、ご希望に近いことを実現するなら、このくらいのような気がします。
>VBAならできるんでしょうか?
どのような使い勝手のものなのか不明なので、どのような方法が適切なのかはわかりませんけれど、代替する方法は考えられると思います。
例えば、上記の状態でVBAから行の削除を行うことは可能ですが、その指示をどのようにして行うのかを考える必要があります。
あるいは、全く別の発想で、同じ様な計算を行っているのであれば、数式を設定するのをやめてしまって、関連するセルに値が入力されたら、VBAで計算を行うか、または、数式を設定するといった方法も考えられます。
数式のあるセルを消されたら、VBAで再度数式を設定することも可能です。
(こちらであれば、指示の方法を考える必要もありません)
>当方、VBAに関してはほぼ無知です。。。
VBAで行う場合はそれなりの知識が必要になりますので、ほぼ無知の状態からでは学習コストがそれなりにかかるものと想像します。
回答ありがとうございます。
やはりシートの保護が最適ですかね。
削除するのも見た目だけの問題ですので、非表示 or 保護解除して列削除 すれば済みますし。
測定記録のテンプレートを作ってます。
『特定のセルに数値を入力すると、その値を参照して数式セルで計算結果を出す』みたいなものです。
No.1
- 回答日時:
回答ありがとうございます。
対象セルを含む行を削除したいので、教えていただいた方法だとうまくいきませんでした。
やはりこの方法しかないのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
枠に収まらない文字を非表示に...
-
vba テキストボックスとリフト...
-
セルをクリック⇒そのセルに入力...
-
貼り付けで複数セルに貼り付けたい
-
(Excel)数字記入セルの数値の後...
-
エクセルで指定したセルのどれ...
-
EXCEL VBA セルに既に入...
-
数式を残したまま、別のセルに...
-
エクセルの一つのセルに複数の...
-
excelの特定のセルの隣のセル指...
-
エクセルのセルの枠を超えて文...
-
Excel for Mac使用中ポインタが...
-
【Excel】 セルの色での判断は...
-
対象セル内(複数)が埋まった...
-
EXCELのセルの中の半角カンマの...
-
Excel 例A(1+9) のように番地の...
-
エクセルで住所と建物名を分け...
-
Excelで数式内の文字色を一部だ...
-
LARGE関数 飛び飛びの範囲を指定
-
Excelでのコメント表示位置
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
vba テキストボックスとリフト...
-
貼り付けで複数セルに貼り付けたい
-
エクセルで指定したセルのどれ...
-
枠に収まらない文字を非表示に...
-
セルをクリック⇒そのセルに入力...
-
エクセル
-
数式を残したまま、別のセルに...
-
(Excel)数字記入セルの数値の後...
-
エクセル オートフィルタで絞...
-
エクセルの書式設定の表示形式...
-
Excel 例A(1+9) のように番地の...
-
エクセルの一つのセルに複数の...
-
excelの特定のセルの隣のセル指...
-
EXCEL VBA セルに既に入...
-
Excelでのコメント表示位置
-
エクセルのセルの枠を超えて文...
-
【エクセル】IF関数 Aまたは...
-
対象セル内(複数)が埋まった...
-
Excelで数式内の文字色を一部だ...
-
【Excel】 セルの色での判断は...
おすすめ情報