• 締切済み

既にデータ入力済のセルに上書きを防ぐ方法

シート1の3つのセル(時間・場所・仕事内容)を使って下記のデータを順次入力して別シートにスケジュール表を作っています。   10:00  東京  仕事1   10:30  東京  仕事2   11:00  東京  仕事3 そこで,ダブルブッキングをしないようにするため,シート1を入力する際,既に同時刻・同場所にデータが入力されているとき(シート2に既にスケジュールが入っているとき),シート1にデータを入力できないもしくは,警告を出す方法はないでしょうか。

みんなの回答

  • pc_knight
  • ベストアンサー率66% (52/78)
回答No.2

2004921さんのされたいことを例えると次のようなことで宜しいでしょうか。 今、シート1に次のようなデータが入力済として ............ A    B     C 1  時間   場所   仕事内容 2 10:00  東京   仕事1 3 10:30  東京   仕事2 4 11:00  東京   仕事3 以下の例のように、(1)新たな行へのデータの追加あるいは(2)既に入力した行のデータの変更などの際、時間と場所の両データとも同じになる行ができることを避けたいというでしょうか。 (1)新たな行へのデータの追加の例 ............. A    B     C 1  時間   場所   仕事内容 2 10:00  東京   仕事1 3 10:30  東京   仕事2 4 11:00  東京   仕事3 5 10:00  東京   仕事N ← 2行目のデータとダブルブッキングのため警告を出す (2)既に入力した行のデータの変更の例 ............. A    B     C 1  時間   場所   仕事内容 2 10:00  東京   仕事1 3 10:30  東京   仕事2 4 10:00  東京   仕事3 ← 2行目のデータとダブルブッキングのため警告を出す もし、そのようなことでしたら入力直後に警告表示のメッセージを出すことは以下のVBAをシート1のコードにコピペすれば可能です。お試し下さい。 Private Sub Worksheet_Change(ByVal Target As Range) Dim tr As Integer Dim r As Integer Dim ret As Integer tr = Target.Row For r = 2 To Range("A65536").End(xlUp).Row If r <> tr And Cells(r, 1) = Cells(tr, 1) And Cells(r, 2) = Cells(tr, 2) Then ret = MsgBox(prompt:=r & "行に同時刻・同場所のデータがあります", Buttons:=vbOKOnly + vbExclamation, Title:="ダブルブッキング") End If Next r End Sub

2004921
質問者

お礼

お礼がすっかり遅くなり申し訳ありません。 プログラムは難しくて・・・。 でも,これから少しずつ勉強して行きたいと思います。 ありがとうございました。

回答No.1

シート全体を保護したい場合は、Aの左隣、1の上の小さなマスを右クリック(シート全体が反転表示される)→ 「セルの書式設定」を選択→ 「保護」タブをクリック→ 「ロック」にチェックを入れて「OK」をクリック→ メニューバーの「ツール」→ 「保護」をポイント→ 「シートの保護」をクリック→ 「シートとロックされたセルの内容を保護する」にチェック→ パスワードを入力(これはどちらでもいいです)→ 「このシートの全てのユーザーに許可する操作」の場所のチェック項目にチェックを入れます(特に指定が無い場合は「ロックされたセル範囲の選択」と「ロックされていないセル範囲の選択」にチェックが付いてます)→ OKをクリック セルに入力しようとすると警告が自動的に出てきますので保護した後にでも確認がてら入力してみて下さい シート全体ではなく範囲指定で保護をしたい場合は、保護したい範囲を選択しておき、メニューバーの「ツール」を選択して後は同じ方法で保護して下さい 解除方法はメニューバーの「ツール」→ 「保護」をポイント→ 「シートの保護の解除」をクリック→ パスワードを入力してる場合はパスワードを入力→ 「OK」で解除されます パスワードを入力していない場合はそのまま「OK」をクリックすると解除されます

関連するQ&A