- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセル データの入力規則)
エクセルデータの入力規則と保護の設定方法
このQ&Aのポイント
- エクセルのデータ入力規則について、A列とB列はロックをかけず、C列とD列はロックをし、シートを保護しています。具体的な範囲はA3~A10までが入力可能であり、B3~B10は条件により入力可能ですが、C3~C10とD3~D10は入力不可です。
- C列とD列は一定の条件で保護を解除しており、入力が可能です。また、B列の条件では、C列とD列が空欄でない場合に停止のエラーメッセージが表示されるように設定しています。通常の入力では停止メッセージが表示されて入力できない状態ですが、貼り付け入力を行った場合は入力が可能です。
- 貼り付けなどでも入力ができない設定方法(入力時にエラーメッセージが表示されるような方法)について質問しています。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
残念ですが,現状で出来る事は,ほとんどありません。 B列には入力はしなければならない(これが最優先)ので,これに伴い貼り付けも禁止できません。 貼り付けた瞬間に入力規則の設定は「貼り潰されて」しまうので,貼り付いた値を禁止する機能も無くなってます。 #参考 一応「やればできる」手としては シートの保護を一時解除 シート名タブを右クリックしてコードの表示を選ぶ 現れたシートに下記をコピー貼り付ける private sub worksheet_change(byval Target as excel.range) dim h as range set target = application.intersect(target, range("B3:B10")) if target is nothing then exit sub for each h in target if h <> "" then if cells(h.row, "C") ="" or cells(h.row, "D") = "" then msgbox "禁止" application.enableevents = false application.undo application.enableevents = true h.select end if end if next end sub ファイルメニューから終了してエクセルに戻る B列の入力規則は解除する シートを保護する
お礼
keithin様 ご教授くださりありがとうございます。 if cells(h.row, "C") ="" or cells(h.row, "D") = "" then を If Cells(h.Row, "C") <> "" And Cells(h.Row, "D") <> "" Then として希望通りのシートが作成できました! お忙しい中ありがとうございました。