• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセル データの入力規則)

エクセルデータの入力規則と保護の設定方法

このQ&Aのポイント
  • エクセルのデータ入力規則について、A列とB列はロックをかけず、C列とD列はロックをし、シートを保護しています。具体的な範囲はA3~A10までが入力可能であり、B3~B10は条件により入力可能ですが、C3~C10とD3~D10は入力不可です。
  • C列とD列は一定の条件で保護を解除しており、入力が可能です。また、B列の条件では、C列とD列が空欄でない場合に停止のエラーメッセージが表示されるように設定しています。通常の入力では停止メッセージが表示されて入力できない状態ですが、貼り付け入力を行った場合は入力が可能です。
  • 貼り付けなどでも入力ができない設定方法(入力時にエラーメッセージが表示されるような方法)について質問しています。

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.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列の入力規則は解除する シートを保護する

hiposi
質問者

お礼

keithin様 ご教授くださりありがとうございます。 if cells(h.row, "C") ="" or cells(h.row, "D") = "" then を If Cells(h.Row, "C") <> "" And Cells(h.Row, "D") <> "" Then として希望通りのシートが作成できました! お忙しい中ありがとうございました。

関連するQ&A