• 締切済み

同じシート内で違うセル範囲の保護方法はありますか?

はじめまして。 Microsoft Office Excel2007を使用しています。 下記の内容を設定出来る方法はあるのでしょうか?? あれば教えて下さいm(_ _)m シートを開いた時に、一部のセル範囲は誰でも(以下<A>とします)入力可能。 別のセル範囲を、一部の人だけ(以下<B>とします)入力可能。←出来ればパスワードを設定したいです。 すべての編集等の入力は私(以下<C>とします)だけが可能。←パスワード必須 在庫管理表を作っています。 支店があり、各拠点の倉庫は別です。 ですので、各拠点ごとに在庫管理者<B>がいます。 取り置きなどもあるので、取り置き希望者<A>が入力出来るセル範囲を、常に入力可能セルとして開けておきたいです。(以外は選択不可) <B>が入出庫数を入力する時は、そのセル範囲を入力可能にしたいです。(又は、それ以外は選択不可) 全ての編集可能者は<C>のみで、必ずパスワードを設定したいです。 シートの保護は知っていますが、マクロ&VBAは使ったことがありません。 ですが、それらを利用して出来るならやってみたいです。(もちろん簡単な方がイイのですが…^^;) ちなみにですが、この様な設定をしたブックは、この設定のままコピー可能でしょうか?? これは難しいなら、マクロを使って各コピーしたシート又はブックを設定してみます。 よろしくお願いします。

みんなの回答

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.3

回答した内容にキチンと目を通して,その通りにアナタのエクセルで試してみましたか? それとも試してもみないで,ただ思いつきで追加質問をしているのでしょうか。 再掲: >Bの対象セル範囲は,事前に校閲タブ右寄りの「範囲の編集を許可」で新規として追加し,範囲パスワードを設定しておきます。 このように行うことで,Bの範囲に記入を試みるとその場でBのパスワードを聞いてきます。 言わずもがなですがBは「フリーのセル」では無いので,勿論「セルのロック」は掛けたままシートを保護します。 もちろんこれは,「シートの保護」のパスワードではありません。

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.2

Aの対象セルは,事前にホームタブ右寄りの書式▼から「セルのロック」を選んで選択を解除しておきます。 Bの対象セル範囲は,事前に校閲タブ右寄りの「範囲の編集を許可」で新規として追加し,範囲パスワードを設定しておきます。 設定を終えたらシートを保護します。パスワードを付けて。 設定したブックをコピーしても,勿論設定は生きたまま複写されます。

herbwordbeat
質問者

補足

ありがとうございます。 返信遅くなり申し訳ありません。 この場合は、Bに記入したい場合どのようにすればイイのですか? Aにはパスワードなしで入力可能ですよね。 Bは、パスワードを入れてBに入力出来るようにするには、A用のパスワードを入れることしか出来ず、結局パスワードで解除したすべてのセルが選択可能になるのですが。。。

  • mar00
  • ベストアンサー率36% (158/430)
回答No.1

'Altキー+F11キーを押す → VBE画面が出てきますので '挿入 → 標準モジュールを選択して下記のマクロを貼り付けて下さい。 'ブックを開いた段階でB、Cの人の入力範囲が保護されます。 'ボタンなどを左上の方にでも配置してMacro1、2を登録して下さい。 'A1にパスワードを入力するようにしています。(保護がかかっている状態では見る事はできません。) 'A1を使っている場合、どこかの空白セルを使用して下さい。マクロの修正も行ってください。 '(1)は保存時にA1を選択した状態で終了した場合、次にブックを開いた時に一瞬パスワードが数式バーに表示される為入れてあります。。不要であれば削除して下さい。 'パスワードはBの人が1234、Cの人が5678にしてありますので修正して下さい。 '入力範囲B、入力範囲CはBとCの人の入力範囲を名前の定義を行って下さい。 Sub Auto_open() Range("B1").Select '(1) If Range("A1") = 5678 Then ActiveSheet.Unprotect (5678) Else ActiveSheet.Unprotect (1234) End If With Range("A1") .Locked = True .FormulaHidden = True .Font.ColorIndex = 2 End With line: Range("A1") = 1234 Range("入力範囲B").Locked = True Range("入力範囲C").Locked = True ActiveSheet.Protect (Range("A1")) End Sub Sub Macro1() 'Bの人の保護解除 If Range("A1") = 5678 Then ActiveSheet.Unprotect (Range("A1").Value) Range("A1") = 1234 ActiveSheet.Protect (Range("A1").Value) End If ActiveSheet.Unprotect On Error GoTo line Range("入力範囲B").Locked = False Range("入力範囲C").Locked = True Range("A1") = 5678 ActiveSheet.Protect (Range("A1").Value) line: End Sub Sub Macro2() 'Cの人の保護解除 If Range("A1") = 1234 Then ActiveSheet.Unprotect (Range("A1").Value) Range("A1") = 5678 ActiveSheet.Protect (Range("A1").Value) End If ActiveSheet.Unprotect End Sub

関連するQ&A