出産前後の痔にはご注意!

エクセルでセルの挿入・削除を禁止し、他のセルの列や行がずれないようにしたい。

■共有データのリスト更新時に、誰かの仕業で列や行の内容が途中からズレて困っています。その為原因となりそうなセルの挿入や削除を規制し、他のセルが上下左右にズレるのを防ぎたいのです。
なおリスト更新時に個々のセルの記載内容は変更出来る必要があります。

シートの保護を応用すれば出来そうな気がしますが、、 具体的な方法を教えてください。
ちなみに皆さんはこんな経験ないですか

このQ&Aに関連する最新のQ&A

A 回答 (2件)

できますよ。


ただし、単純に保護するだけでなく、まずはロックを解除しないとだめですよね。

こちらに同じ例が載っています。

Excel:入力は許可するが行列の挿入・削除は禁止したい
http://office-qa.com/Excel/ex114.htm

この回答への補足

ありがとう御座います、早速試してみました。
確かにロックは掛かるのですが、データを追加する場合など
この方法ではコピー・ペーストも出来なくなりそれは困ります。

「セル範囲を指定して」の「切取り」や「挿入」を防ぎたいのです。
通常その場合はセルがずれる旨、警告が出ます、普通の人はそれ以降のセルがずれるのでそんなことはしないと思いますが、、、
やる人が居るんです。

補足日時:2010/06/29 21:28
    • good
    • 1
この回答へのお礼

行削除が出来ないので、この方法は職場で採用されませんでした
でも便利な機能なので参考になりました、ありがとう御座いました

お礼日時:2010/08/16 23:18

おっしゃるとおりシートの保護機能が使えます。


パスワードを設定して、あとは操作させたくない機能を未チェックにすればOKです。

Excel2003版ですが、画像を添付します。
「エクセルでセルの挿入・削除を禁止し、他の」の回答画像1

この回答への補足

詳しくありがとう御座います
先の方にも補足しましたが、確かにロックは掛かるのですが、データを追加する場合など
この方法ではコピー・ペーストも出来なくなりそれは困ります

補足日時:2010/06/29 21:30
    • good
    • 0

このQ&Aに関連する人気のQ&A

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

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QExcel2010行の挿入ができない

得意先からのメールに添付されていたファイルを流用して別の用途に使おうとしています。
列はどこでも挿入ができます。
しかし、行は1行目の上に行を挿入できますが、それ以外の行では行番号右クリックからの「挿入」がグレーアウトしていて行を挿入することができません。
また、挿入できた場所でも、挿入できたのは5行まで。それ以上は行番号右クリックからの「挿入」こそグレーアウトはしていませんが、それを選択すると添付の画像のようなメッセージが表示されます。
「この操作はワークシート上のテーブル内でシフトしようとしているため許可されません。」
というメッセージの意味もよくわかりません。
どんな設定が施されているのでしょうか。

Aベストアンサー

外していたらすいません^^;;;
グレーアウトしている、と言うのが引っかかるところですね。
シート保護でもかかっているのかなぁ・・と思ったのですが、
一部だけ行挿入不可の設定は出来ないはずなので・・・


と言うわけで、
> どんな設定が施されているのでしょうか。
テーブルの機能じゃないかと思います。
表内にフォーカスを置くと、リボンに「テーブルツール-デザイン」と言うタブが追加されませんか?
デフォルトの画面色だと黄色く色づくタブが出てきたら、ソレです。

ただ、このテーブル内での削除・挿入の操作は、行単位・列単位なら問題なく出来るはずです。
テーブル内で単独セル宛に削除・挿入操作をしても、行単位・列単位で削除・挿入されます。
ただし、テーブルのレイアウトが崩れる削除・挿入操作をすると、
ご提示のエラーメッセージが表示され、操作を拒否されます。
テーブル外の上・左のセルを(行単位・列単位以外で)削除・挿入しようとすると
テーブルのレイアウトが崩れる・・と言った具合です。

解除するには、リボンのテーブルツール→デザインタブ→ツール内の「範囲に変換」
あるいは、表内右クリック→「範囲に変換」
この作業で出来ます。

http://allabout.co.jp/gm/gc/373733/
テーブル機能について説明があるページです。
参考になさってくださいませ。

外していたらすいません^^;;;
グレーアウトしている、と言うのが引っかかるところですね。
シート保護でもかかっているのかなぁ・・と思ったのですが、
一部だけ行挿入不可の設定は出来ないはずなので・・・


と言うわけで、
> どんな設定が施されているのでしょうか。
テーブルの機能じゃないかと思います。
表内にフォーカスを置くと、リボンに「テーブルツール-デザイン」と言うタブが追加されませんか?
デフォルトの画面色だと黄色く色づくタブが出てきたら、ソレです。

ただ、このテーブル内での削...続きを読む

Qエクセル VBA で行の右クリックメニューから行の挿入削除を無効にしたい

お世話になります。

右クリックメニューの行の挿入と削除を無効にしたいのですが、
セルを選択して、右クリックメニューの挿入・削除は

Private Sub Workbook_Open()
Dim mymenubar1 As CommandBar
Set mymenubar1 = Application.CommandBars("Cell")
mymenubar1.Controls("挿入(&I)").Enabled = False
End Sub

で無効にできたのですが、
行を選択→右クリックメニューの挿入削除の無効化の仕方がわかりません。
※セルに対してではなく、行に対して行いたいのです。

ご教授頂ければと幸いですのでよろしくお願いします。

Aベストアンサー

#1 の回答者です。読み落としましたので、書き加えました。
ただ、再度書きますが、Excel 2003以上には不要です。
また、これは、クラスインスタンスに設けることも多いです。
これは、右クリックメニュー(Cell)だけでなく、メニューの中も含めます。

サブルーチンを入れ替えてください。

Private Sub InsertEnabled(flg As Boolean)
With Application
 .CommandBars.FindControl(, 296).Enabled = flg
 .CommandBars.FindControl(, 293).Enabled = flg
 .CommandBars("Worksheet Menu Bar").FindControl(, 30003). _
        Controls("削除(&D)...").Enabled = flg
 .CommandBars("Row").FindControl(, 3183).Enabled = flg
 .CommandBars("Cell").FindControl(, 3181).Enabled = flg
End With
End Sub


本来は、2バイト文字を使いたくはないのですが、どうしてもできない部分があります。

#1 の回答者です。読み落としましたので、書き加えました。
ただ、再度書きますが、Excel 2003以上には不要です。
また、これは、クラスインスタンスに設けることも多いです。
これは、右クリックメニュー(Cell)だけでなく、メニューの中も含めます。

サブルーチンを入れ替えてください。

Private Sub InsertEnabled(flg As Boolean)
With Application
 .CommandBars.FindControl(, 296).Enabled = flg
 .CommandBars.FindControl(, 293).Enabled = flg
 .CommandBars("Worksheet Menu Bar").Fin...続きを読む

Qエクセルの行と列が突然削除できなくなりました

突然エクセルの行列が削除できなくなってしまいました。行列の上で右クリックするとなぜか削除の文字だけグレーになってしまい、削除できません。どうしたら良いでしょうか?

Aベストアンサー

再インストールかシステムの復元で・・・
http://www.shukuzawa.com/diary/daiary041004.html

Qエクセルで特定の行だけ行削除、行挿入できないようにロックをかけるには

エクセルで、1~3行目に行削除、行挿入のロックをかけ、それ以外は行の挿入、削除を許可させたいのですが、うまくいきません。1~3行目には入力欄があるため、1~3行目のすべてのセルにロックをかけることはできません。
マクロを使ってもいいのですが、これを何とか実現する方法はないでしょうか。
よろしくお願いいたします。

Aベストアンサー

>Password:="パスワード"

もう、おわかりになってしまいましたが、

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Row < 4 Then
  Me.Protect "passward"
Else
  Me.Unprotect "passward"
End If
End Sub


ちょっと洒落た書き方を教えておきます。
標準モジュールを設けて、その一番上の1行目に

Public Const PWD = "mypassword"

シートモジュールには、直接書くかわりに、このように変数を置いてもよいです。

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Row < 4 Then
  Me.Protect PWD
Else
  Me.Unprotect PWD
End If
End Sub

'//
VBAに詳しい人なら分かってはしまいますが、ちょっと覗いたぐらいでは、PWDが、どうして、"mypassword" か、気がつかないかもしれません。

>Password:="パスワード"

もう、おわかりになってしまいましたが、

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Row < 4 Then
  Me.Protect "passward"
Else
  Me.Unprotect "passward"
End If
End Sub


ちょっと洒落た書き方を教えておきます。
標準モジュールを設けて、その一番上の1行目に

Public Const PWD = "mypassword"

シートモジュールには、直接書くかわりに、このように変数を置いてもよいです。

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
...続きを読む

QEXCEL VBA で現在開いているブックのファイル名を取得する方法

EXCEL2003 VBAで業務を簡素化するために、現在開いているブックのファイル名を取得する方法が分かりません。
作業手順をマクロを使って処理していますが、オリジナルのワークブックをファイル名を変えて保存し、以後、このワークブックを読み込んで使用しています。
このときのVBAは、オリジナルのファイル名を使っているため、ファイル名を変更するとエラーになり、以後の業務に使用できません。
常にファイル名を取得出来るVBAをどなたか、教えて下さい。

Aベストアンサー

>現在開いているブックのファイル名
 ちょっと曖昧な表現かなぁという気もいたしますが、VBAが書いてあるブックのブック名は
ThisWorkbook.Name
で、現在 "アクティブにして" 操作対象になっているブックの名前は
ActiveWorkbook.Name
ですね。

 しかし、
>VBAは、オリジナルのファイル名を使っているため、ファイル名を変更するとエラーになり
というような文脈からすると、
ThisWorkbook.Name
の方ですかね。

QExcel 行追加禁止をしたい。

シート毎に行追加を禁止したいと思っているのが、
方法はありますでしょうか?
vbaでもなんでもいいのですが、
宜しくお願いします。


Excel2000です。

Aベストアンサー

メニューの、挿入ー行のサブメニューをなくす方法
Sub test07()
Dim b As menubar
MsgBox Application.MenuBars(xlWorksheet).Menus(4).MenuItems(2).Caption
Application.MenuBars(xlWorksheet).Menus(4).MenuItems(2).Delete
End Sub
ーー
リセット
Sub ResetMenuBar()
Application.CommandBars("Worksheet Menu Bar").Reset
End Sub
ーー
上記のMenus(4).MenuItems(2).の4や2は質問者の場合に挿入、行かどうか確認してください(Delete行のコードをコメント化して、無効にし、Msgbox でCaptionの文字を確認してください)
ーー
もともとメニューをいじくっている(追加削除などしている)場合は後半のResetMenuBar()の効果が心配です。
挿入ー行のメニューだけを加えれれば(復活すれば)よいのだが、良くわからない。すみません。
http://www.geocities.jp/happy_ngi/YNxv295.html

メニューの、挿入ー行のサブメニューをなくす方法
Sub test07()
Dim b As menubar
MsgBox Application.MenuBars(xlWorksheet).Menus(4).MenuItems(2).Caption
Application.MenuBars(xlWorksheet).Menus(4).MenuItems(2).Delete
End Sub
ーー
リセット
Sub ResetMenuBar()
Application.CommandBars("Worksheet Menu Bar").Reset
End Sub
ーー
上記のMenus(4).MenuItems(2).の4や2は質問者の場合に挿入、行かどうか確認してください(Delete行のコードをコメント化して、無効にし、Msgbox でCaption...続きを読む

QエクセルのIF関数で、文字が入力されていたならば~

エクセルのIF関数で文字が入力されていたならば~、という論理式を組み立てたいと思っています。

=IF(A1="『どんな文字でも』","",+B1-C1)

A1セルに『どんな文字でも』入っていたならば、空白に。
文字が入っていなければB1セルからC1セルを引く、という状態です。

この『どんな文字でも』の部分に何を入れればいいのか教えてください。

またIF関数以外でも同様のことができれば構いません。

宜しくお願いします。

Aベストアンサー

=IF(ISTEXT(A1),"",B1-C1)

でどうでしょうか?

Q行の挿入ができなくなった

win8.1 エクセル2010ですが、
行を1行選択して、右クリックで挿入しようとしたら
画像のようなエラーが出ました。

なぜ1行しか選択してないのにこの画面が出るのかわかりません。

シートの最終行は130行なので、多くないと思います。
パソコンを再起動させても、同じエラーが出ました。

Aベストアンサー

>画像のようなエラーが出ました。
「エラー」ではなく「警告」です。
処理時間が長くなるとフリーズと勘違いするので予め長時間の処理になることを警告しているだけです。
どの程度の時間が掛かるか試されたでしょうか?
長いと感じるレベルは人によって異なりますので状況を確認してから対処してください。

>なぜ1行しか選択してないのにこの画面が出るのかわかりません。
1行挿入することで再計算するデータが多量になることもありますので挿入行数とは関係ないと思います。
警告を出す基準を超えているだけなので実際の処理時間を考慮して「今後このメッセージを表示しない」にチェックを入れてOKボタンをクリックすれば良いでしょう。

Q別のシートから値を取得するとき

Worksheets("シート名").Activate
上記のを行ってから別シートの値を取得するのですが、
この処理を行うと指定したシートへ強制的にとんでしまいます。。。

※イメージ
For ~ To ~
  Worksheets("シートA").Activate
  シートAの値取得
       :
  Worksheets("シートB").Activate
  シートBの値取得
Next

このイメージ処理を行うとものすごい勢いで画面がチカチカします。。。
シートを変えずに他のシートから値を取得する方法はないのでしょうか。
教えてください!

Aベストアンサー

Worksheets("シートA").Range("A1")

みたいな感じでできませんか?

QEXCELの特定セルを編集不可にする

特定のセル(他のセルからの計算結果が自動で出力される)をユーザーが編集できないようにロックする方法を教えてください。
また、ユーザーがこのセルを編集しようとすると、任意の警告文字(例:ここは編集できません!)を表示させることができましたら、合わせて教えてください。

Aベストアンサー

特定のセルをユーザーが編集できないようにするのではなく、特定のセルをユーザーが編集できる、つまりそれ以外のセルは編集できないようにするのがシート保護です。それでことが足りますよね?

http://hamachan.info/excel/si-to.html

ここに図解で説明してありますのでご覧下さい。


人気Q&Aランキング