• ベストアンサー

セルの書式の変更を特定のセル範囲だけに限定

エクセルでワークシートの保護をするときに、すべてのユーザーに許可する項目を選べるのは存じています。セルの書式もその一つです。 ただ、そうした場合、シート全体に対して書式設定の変更が可能になってしまします。 質問は、セルの書式の変更をある一定のセル範囲だけに限定できないかということです。ご教示ください。

質問者が選んだベストアンサー

  • ベストアンサー
  • kkkkkm
  • ベストアンサー率65% (1620/2460)
回答No.4

一定のセル範囲を選択したときだけ保護を解除しそれ以外を選択したら保護するするようにすればいかがでしょう。 Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Intersect(Range("A1:C5"), Target) Is Nothing Then ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True Else ActiveSheet.Unprotect End If End Sub

emaxemax
質問者

お礼

なーるほど! 何て柔軟な発想でしょ。 Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Intersect(Range("A1:C5"), Target(Target.Count)) Is Nothing Then Me.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True Else Me.Protect AllowFormattingCells:=True End If End Sub でできました!

その他の回答 (3)

  • HohoPapa
  • ベストアンサー率65% (454/692)
回答No.3

VBAには、 書式を変更したときのイベントが無いので 書き換わったことを検知するのが困難ですし 複数セルを選択して変更することができるほか 背景色や文字フォントなど、書式の情報が多様なので 手強い要求と思われます。 私だったら、 入力用のシートと書式を変更されたくないシートとに分け オペレータの方には入力用シートを使ってもらうことを考えます。 あるいは、 書式だけを格納したシート(書式保持原本シート)を用意し Private Sub Worksheet_Change(ByVal Target As Range) Private Sub Worksheet_SelectionChange(ByVal Target As Range) Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) といったイベントで 必要なセル範囲の書式をかぶせる制御をします。

emaxemax
質問者

お礼

ありがとうございます。 そうなんです。書式を変更したときのイベントが無いので困りものです。 御教示の方法で考えてみます。

  • msMike
  • ベストアンサー率20% (363/1775)
回答No.2

入力されているデータ内容変更の適用範囲の限定は可能だけど、[セルの書式]の限定は駄目よダメダメのようです。(Excel 2013)

emaxemax
質問者

お礼

ありがとうございました。 やはりダメヨダメダメ!ですか・・・。 セルの書式を変えられたことを検知してVBAでやろうかとも思いましたが難しそうですね。

回答No.1

  変更を許したいセルで書式設定の中の「保護」にある「ロック」を外す 変更を許可したいセル全てを同様に保護のロックを外す 次にシート全体を保護する こうすれば保護のロックが外れてるセルは自由に変更できますが、それ以外は変更できなくなります  

emaxemax
質問者

お礼

早速ありがとうございます。 いえいえ、ロックを解除してないセルもワークシートの保護をするときに、すべてのユーザーに許可する項目でセルの書式を選ぶと書式変更ができてしまします。もちろんロック解除してないので入力はできませんが。

関連するQ&A

  • Excelのセルの書式設定

    お世話になっております。 EXCEL2002で作成したワークシートをEXCEL2000で 参照すると、セルの書式設定ができないという事象が 発生しています。 (1)ワークシート作成 (2)「セルの書式設定」で、「保護」タブからロックの  チェックボックスを外す (3)ツール→保護→シートの保護 で、ワークシートを  保護。このとき、セルの書式設定については全ての  ユーザに変更許可にチェック (4)このファイルをEXCEL2000で開くと、セルの書式  設定が選択できない なお、同じファイルをEXCEL2002で開くと、問題なく 設定変更が行えます。 上記事象の対応方法について何か情報をお持ちの方 ご教授下さい。

  • Excelで書式の変更を禁止しデータ入力だけ許可したい

    Excelでsheetのデータ入力だけを許可し、書式の変更はできないように したいファイルがあります。 "保護"機能を使ってできると思っていたのですが、たしかに直接そのsheet中の セルの書式を変更することはできないのですが、他のsheetのセルをコピーして 保護対象のsheetにそれを貼り付けることによって、書式が変更されてしまいます。 このようなケースでも、貼り付けを禁止するとか貼り付けても書式が変更されない ようにするためにはどのようにすればよいでしょうか。 よろしくお願いいたします。

  • Excel2000でセルの書式設定を変更させたくない

    Excel2000でセルの書式設定を変更させたくない Excel2000を使用しています。 Excel2002?以降では、書式設定を保護できるらしいですが、2000ではそのような機能がありません。でも、データを貼り付けた際に書式設定を変更させたくないのですが、何か方法がありますでしょうか? 具体的には、シート内のある範囲内(B3-F43)までを書式設定で「縮小して全体を表示」に設定してあり、「折り返して全体を表示する」のチェックを外してセル1行で表示するよう設定しています。 ここに改行付きの文字列データをコピーして貼り付けると、「折り返して全体を表示する」に勝手にチェックが入ってセル1行では表示しきれなくなり、文字全体が読めなくなるのですが、この勝手にチェックされてしまう「折り返して全体を表示する」のチェックをマクロを使って、自動で外す方法とかありますでしょうか? とりあえず現状は貼り付け前に一度、テキストエディタで改行を削除する編集をしてからデータを貼り付けるようにしてるのですが、面倒なのでできれば改行付きデータを直接Excelに貼り付けても「折り返して全体を表示する」にチェックが入らないようにしたいのです。 マクロの知識はまったくないので、どなたかお知恵を貸していただけないでしょうか? 現在、他の件でマクロを教えていただいて、Thisworkbookという所に、Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)とかいうマクロを記述してあります。 Excelデータを上書きセーブする際にこのマクロが走るようなんですが、これに追記する形で、B3からF43までのセルの書式設定の「折り返して全体を表示する」のチェックを強制的に外すことができると助かるのですが。 同じシート内に、「折り返して全体を表示する」を使用しているセルもあるので、シート全体の書式設定を変えてしまうのではなく、あくまでB3からF43までの範囲のセルで設定したいのですが、こういうことはマクロで可能なのでしょうか?

  • エクセルの特定のセルを書き込み禁止にする方法

    EXCEL2007、XPです。 セルの保護を次の手順でやりました。 1)保護するセルを範囲選択して、校閲~変更を許可する~ウィザードで範囲名と範囲を入力。 2)書式で「シートの保護」 **************** ところが、やってみると、保護されるセルと、保護されないセルの両方がランダム的に表れます。 つまり、危なっかしくて、セルの保護はできないことになります。 なにか間違っているのでしょうか。教えてください。お願いします。

  • シートの保護をしていないセルの書式変更

    関数が入力されているセルのみ下記の方法でシートの保護をしたのですが、その後メニューから[書式]→[セル]が選択できなくなりました。 確かに保護されていないセルに対して数字や文字を入力したり消したり自由にできるのですが、フォントの色を変えたりフォントの大きさを変えたりできなくなりました。 一部でもどこかにシートの保護をしている場合、保護をしていないセルに対してフォントの変更はできなくなってしまうんでしょうか? もしシートの保護がされていないセルに対してフォントの変更等ができる方法があれば教えて下さい。Excelは98です。よろしくお願いします 1.セルをすべて選択する 2.メニューから[書式]→[セル]を選択する 3.[保護]タブの[ロック]のチェックをオフにする 4.メニュー[編集]→[ジャンプ]をクリックする 5.[セル選択]ボタンをクリックする 6.[数式]オプションのチェックをオンにする 7.メニューから[書式]→[セル]を選択 8.[保護]タブの[ロック]のチェックをオンにする 9.メニューから[ツール]→[保護]→[シートの保護]をクリックする 10.OK

  • シートの保護されているシートの任意のセルの網掛け

    シート保護しているシートの、任意のセルのみの 網掛け(書式変更)をすることはできますか? ほかのセルは書式も変更できないように したいです。 「範囲の編集を許可」をいうものをやってみたのですが、使用者は、ネットワークからシートを使用します。ネットワークの設定もできるのでしょうか? どうぞよろしくお願いいたします。

  • エクセル・セルの結合ができない…

    WindowsXPのExcel2003を使用してます。 御回答の程宜しくお願い申し上げます。宜しくお願いします。 ★計算式の入ったセルを保護したい。 (計算式の変更や、削除を防ぐため) ↓ まずはシート全体の セルの書式設定内の保護「ロック」のチェックをはずす。 ↓ 特定の箇所のセルを「ロック」する。 ↓ シートの保護  許可する操作=「ロックされたセル範囲の選択」以外全て許可 ↓ ロックした場所はクリックできない。 ロックしていない場所は数字の入力や色の変更などできる。 ここまでは良いのですが、問題は「セルの結合」ができないことです。 セルの書式設定の中でも「セルの結合」だけグレーになっていて どうしても結合が出来ません・・・。 計算式を消してしまわないよう保護しつつ、他の計算式のないセルは 結合したり左寄せを必要としてます。 解決策をお願い致します!

  • EXCELで特定のセルのみ移動するには?パート2

    EXCELでセルの保護の解除を行います。 そしてシート全体の保護をします。 そうすると保護の解除をしたところしか上書きできなくなります。 ここまでは分かるのですが、ロックの解除を行ったセルのみENTERキーで順番に移動させるような設定は出来ますか? なおかつ移動の順番などを指定したり出来ますか? もしも出来るようであれば、そのやり方を教えてください。 前回と同じ質問なのですが、検証せずに評価をつけてしまったので、再度質問します。 バージョンは2003ではなく、2000でした。 シートの保護時に「ロックされたセル範囲の選択」という項目はありませんでした。

  • ユーザーフォームからセルに入力すると書式が限定される?

    ユーザーフォームを作成して、その中にあるテキストボックスに入力した文字列(具体的には100-200というように数字‐数字というタイプ)をエクセルのワークシートに入力すると月日表示になってしまいます。別に代入先のセルの書式を固定しているわけではないのですが・・。何でなのか心当たりのある方いらっしゃませんか?(^^;)

  • エクセルの1つのセルだけを保護したい

    エクセル2010でシートの保護と編集可能なセルの指定方法(セルのロックを外してシート全体を保護する)は知っているのですが、計算式の入った数個のセルだけを保護したいのですが。 一応、セルの書式設定で1つのセルだけロックを外して、シート全体を保護してみたのですが、この方法では駄目でした。 簡単に目的の(飛び飛び)のセルだけを保護する方法を教えてください。

専門家に質問してみよう